Julian Parker
asked on
powershell dos equivalent for dir *.gh* /s /b
I've been asked to write a script that works in powershell, the script needs to list all the ghost files (gho and ghs) on the system and extract the directory the company name and the file name.
The file names are listed like; s:\images\<company>\<image name>
Where <company> could be any company name, and imagename could be any image name (ending in gho/ghs)
I then need to get the file sizes for each of the files.
I can list the stuff in a batch file and strip out the information using the dir *.gh* /s /b and go from there but powershell seems wholly over complicated but I've been asked to do this in powershell so so be it.
So far I have tried lots of combinations around the following;
Anyone out there who knows powershell? The last time I wrote a DOS script was when DOS 5 was all the rage.
The file names are listed like; s:\images\<company>\<image
Where <company> could be any company name, and imagename could be any image name (ending in gho/ghs)
I then need to get the file sizes for each of the files.
I can list the stuff in a batch file and strip out the information using the dir *.gh* /s /b and go from there but powershell seems wholly over complicated but I've been asked to do this in powershell so so be it.
So far I have tried lots of combinations around the following;
Anyone out there who knows powershell? The last time I wrote a DOS script was when DOS 5 was all the rage.
cls
$Dir = get-childitem s:\images | select-object fullname
$List = $Dir
$List
I've also tried;
$List = $Dir | where {$_.extension -eq ".gh?"}
but I get nothing back...
Oops, I forgot to include to look for *.gh* files only. Try this instead.
cls
$Dir = get-childitem -recurse s:\images -include *.gh* | select-object Directory, Name
$List = $Dir
$List
ASKER
Thanks, It works if I just run the get-childitem from powershell, If I keep the $List=$Dir and then $List I get no output.
get-childitem -recurse s:\images -include *.gh* | select-object directory,name
I've also tried fullname as the object, I've also included length which was quite handy.
Unfortunately the directory and names get truncated after about 26chars, the last three chars are then "..." which is not good, frankly I think they should drop the "power" from the powershell. I'm sure it's good for some things but this is supposed to be a simple directory list.
Is there any way of displaying the full directory and file names so that they are not truncated?
Thanks
Jools
get-childitem -recurse s:\images -include *.gh* | select-object directory,name
I've also tried fullname as the object, I've also included length which was quite handy.
Unfortunately the directory and names get truncated after about 26chars, the last three chars are then "..." which is not good, frankly I think they should drop the "power" from the powershell. I'm sure it's good for some things but this is supposed to be a simple directory list.
Is there any way of displaying the full directory and file names so that they are not truncated?
Thanks
Jools
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Thanks, I'll try it again in the morning....
@Gus
Here is what I get when I run your code:
[PS] C:\>$DIR = get-childitem -recurse c:\batch -include *.ba*
[PS] C:\>foreach ($item in $Dir)
>> {
>> $Directory = $item.Directory
>> $Name = $item.Name
>> $PathFile = "$Directory\$Name"
>> $PathFile
>> }
>>
C:\batch\security\whom.bat
C:\batch\oldfile.bat
[PS] C:\>
Here is what I get when I run your code:
[PS] C:\>$DIR = get-childitem -recurse c:\batch -include *.ba*
[PS] C:\>foreach ($item in $Dir)
>> {
>> $Directory = $item.Directory
>> $Name = $item.Name
>> $PathFile = "$Directory\$Name"
>> $PathFile
>> }
>>
C:\batch\security\whom.bat
C:\batch\oldfile.bat
[PS] C:\>
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Thanks for the responses,
@gus, your example did not truncate the output and I was able to modify it to include the length (size). I used the code below.
@pony10us thanks for the examples, theve been a great help
I've got a better idea about powershell and whilst I think it makes simple tasks more difficult (at least for my needs) I am getting a better idea how it works.
That said, if I continue to have issues finding information on powershell I may just end up installing unxutils and doing a simple `find` command.
@gus, your example did not truncate the output and I was able to modify it to include the length (size). I used the code below.
@pony10us thanks for the examples, theve been a great help
I've got a better idea about powershell and whilst I think it makes simple tasks more difficult (at least for my needs) I am getting a better idea how it works.
That said, if I continue to have issues finding information on powershell I may just end up installing unxutils and doing a simple `find` command.
$Dir = get-child-item -recurse s:\images -include *.gh*
foreach ($item in $Dir)
{
$Directory = $item.Directory
$Name = $item.Name
$Length = $item.Length
$PathFile = "$Directory\$Name,$Length"
$PathFile
}
ASKER
see previous post
@jools:
Glad we could help. As demonstrated, there is always more than one way to "skin a cat" :)
Thanks for the points.
Glad we could help. As demonstrated, there is always more than one way to "skin a cat" :)
Thanks for the points.
Don't give up on Powershell. Once in to it, I found it to get a lot easier and now pretty much use it for everything. Just remember that everything is an object and every object has various attributes. If you want to see all the attributes of that object, just add |fl * to the end of it (format list).
For instance, $item |FL *
Glad I could help.
For instance, $item |FL *
Glad I could help.
ASKER
@Gus
>> just add |fl * to the end of it (format list).
Thats probably one of the best bits of Powershell advice I've seen.
Thanks.
>> just add |fl * to the end of it (format list).
Thats probably one of the best bits of Powershell advice I've seen.
Thanks.
Open in new window