标题: [问题求助] 求PowerShell解惑 dir 命令 加cd和不加cd的结果为什么不同 [打印本页]
作者: 5i365 时间: 2022-2-15 13:41 标题: 求PowerShell解惑 dir 命令 加cd和不加cd的结果为什么不同
PS文件和W文件夹在同一目录, W文件夹的结构在最后:
目前问题: code1没有任何输出, code2有输出且正确, 为什么会出现这种情况?
示例文件夹: https://send.cm/d/8ojE- #code1
- dir "W" -dir |
- where{
- (dir $_ -File -dep 2).name -contains "YES"
- }
-
- #code2
- cd "W"
- dir -dir |
- where{
- (dir $_ -File -dep 2).name -contains "YES"
- }
复制代码
---------------------------------------------------------------
C:\Users\Administrator\Desktop\T>tree W /f
卷 Win 的文件夹 PATH 列表
卷序列号为 448B-18AC
C:\USERS\ADMINISTRATOR\DESKTOP\T\W
├─1
│ └─A
│ YES
│
├─2
│ └─B
│ YES
│
└─3
└─C
NO
作者: 5i365 时间: 2022-2-16 09:17
本帖最后由 5i365 于 2022-2-16 09:19 编辑
又遇到相同的问题了,带cd的能成功, 不带cd的没有输出:
在task5文件夹下找YES文件, 然后将其移动到所在文件夹的父文件夹下的OK文件夹中
cd task5
$s = gci -File -rec "YES"
move $s.Directory "$($s.Directory.parent)\OK"
---------------------------------------------------------
$s = gci task5 -File -rec "YES"
move $s.Directory "$($s.Directory.parent)\OK"
作者: idwma 时间: 2022-2-16 14:16
- dir "W" -dir |
- where{
- (dir $_.fullname -File -dep 2).name -contains "YES"
- }
复制代码
- gci task5 -File -rec -include "YES"
复制代码
作者: 5i365 时间: 2022-2-16 16:37
回复 3# idwma
感谢大侠支招, 还是不理解导致问题的原因, 有相关的资料参考吗?
作者: idwma 时间: 2022-2-16 16:56
回复 4# 5i365
呃就是些基础常识呀
1楼原因就是你把cd切换当前目录这步省了呀,又没把路径补上
2楼help dir有说明
作者: 5i365 时间: 2022-2-16 17:00
回复 5# idwma
可是下面这个, 图片为什么没有保存到CD转到的目录?- #@&cls&powershell "type '%~0'|out-string|iex"&pause&exit
-
- [void][Reflection.Assembly]::LoadWithPartialName('System.Drawing')
- cd "C:\Users\Administrator\Desktop\新建文件夹"
- dir *.bmp |
- foreach{
- $image = [Drawing.Image]::FromFile($_.FullName)
- #$image.Save($($_.BaseName + '.jpg'), [Drawing.Imaging.ImageFormat]::Jpeg)
- $s=$_.BaseName
- $image.Save("$s.jpg", [Drawing.Imaging.ImageFormat]::Jpeg)
- $image.Dispose()
- }
复制代码
作者: idwma 时间: 2022-2-16 17:14
回复 6# 5i365
放的位置不对- #@&cls&cd "C:\Users\Administrator\Desktop\新建文件夹"&powershell "type '%~0'|out-string|iex"&pause&exit
-
- [void][Reflection.Assembly]::LoadWithPartialName('System.Drawing')
-
- dir *.bmp |
- foreach{
- $image = [Drawing.Image]::FromFile($_.FullName)
- #$image.Save($($_.BaseName + '.jpg'), [Drawing.Imaging.ImageFormat]::Jpeg)
- $s=$_.BaseName
- $image.Save("$s.jpg", [Drawing.Imaging.ImageFormat]::Jpeg)
- $image.Dispose()
- }
复制代码
作者: 5i365 时间: 2022-2-16 18:07
回复 7# idwma
我不保存成bat, 而是在 powershell ise 中直接执行ps代码, 也不行, 没有在 新建文件夹 中生成jpg文件
我想使用cd 命令, 并想让jpg文件, 保存在cd到的文件夹中,
[void][Reflection.Assembly]:oadWithPartialName('System.Drawing')
cd "C:\Users\Administrator\Desktop\新建文件夹"
dir *.bmp |
foreach{
$image = [Drawing.Image]::FromFile($_.FullName)
#$image.Save($($_.BaseName + '.jpg'), [Drawing.Imaging.ImageFormat]::Jpeg)
$s = $_.BaseName
$image.Save("$s.jpg", [Drawing.Imaging.ImageFormat]::Jpeg)
$image.Dispose()
}
作者: idwma 时间: 2022-2-16 18:39
回复 8# 5i365
官方文档里什么都有呀- https://docs.microsoft.com/zh-cn/powershell/module/microsoft.powershell.core/about/about_automatic_variables#pwd
复制代码
- [void][Reflection.Assembly]::LoadWithPartialName('System.Drawing')
- $a="C:\Users\Administrator\Desktop\新建文件夹"
- [System.Environment]::CurrentDirectory=$a
- cd $a
- dir *.bmp |
- foreach{
- $image = [Drawing.Image]::FromFile($_.FullName)
- #$image.Save($($_.BaseName + '.jpg'), [Drawing.Imaging.ImageFormat]::Jpeg)
- $s=$_.BaseName
- $image.Save("$s.jpg", [Drawing.Imaging.ImageFormat]::Jpeg)
- $image.Dispose()
- }
复制代码
作者: 5i365 时间: 2022-2-16 19:05
回复 9# idwma
大侠牛X, 这回懂了, 原来有个这个变量:
[System.Environment]::CurrentDirectory=$a
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |