【发布时间】:2022-11-28 08:25:51
【问题描述】:
我正在使用 Powershell,我循环遍历文件并创建一个包含每个文件名的文件夹以将一些数据放在那里。
$files = @("[som]video.mkv")
$tmp_location = "."
# to reproduce just do it on files with a filename like [somen_id]restofname.ext
foreach ($file in $files){
$base_input = ([io.fileinfo]$file).basename
# base input may be a file called: [somen_id]restofname.ext
$tmp_dir = "$tmp_location/$base_input"
mkdir $tmp_dir # this line works and the directory is created
# do some stuff first before cd
cd $tmp_dir #this does not work
}
cd 无法处理 tmp_dir 变量,当它有像 [] 这样的特殊字符时,但是 mkdir(甚至 rm)创建/删除那个目录就好了,这在 Powershell 中是一个非常不一致的行为,我希望它要么失败要么为所有人工作!
知道如何转义变量,使其对cd 可读吗
(在现实生活中我的数组不仅仅是手写的 1 个文件名,但是这个例子也显示了错误)
谢谢
【问题讨论】:
-
我不会将
[]放在路径名中。 Powershell 和.net 会遇到很多麻烦。 -
@js2010,问题是 PowerShell 特有的,由于它的考虑
[和]元字符的通配符语言。我认为底层 .NET API 不会受到影响。 -
@js2010
"I wouldn't put [] in path names",不是真正的选择......至少在我的特定用例中不是
标签: powershell