我希望将目录完整路径传递给包含所有空格和特殊字符的测试批处理脚本,并在批处理文件中读取它。 问题是目录路径包含空格和分号(名称后跟时间戳,如" abcdefg yyyy-mm-dd hh; mm; ss") 使用下面的powershell脚本,我在特定路径中搜索具有给定模式的目录,然后将其名称传递给批处理文件。
test.ps1代码:
Param([string]$path, [string]$searchStr)
$filenameregex = "^$($searchStr)\s\d{4}-\d{2}-\d{2}"
get-childitem -Path $path -Directory |where-object{$_.Name -match $filenameregex} | Sort CreationTime -desc | Select -Skip 4 | ForEach-Object {$A=start-process -FilePath testBacth.bat -ArgumentList $_.FullName -Wait -passthru;$A.exitcode}
bacth只是将参数写入文件。
testbatch.bat代码:
ECHO%~1> out.txt
当我用
运行脚本时test.ps1 -path \\nosrvfnas0001\bak\nosrvfdati0001\ -str Shared
这是我得到的输出:
\\nosrvfnas0001\bak\nosrvfdati0001\Shared
\\nosrvfnas0001\bak\nosrvfdati0001\Shared
\\nosrvfnas0001\bak\nosrvfdati0001\Shared
时间戳部分缺失!!!
我认为这是由于fullname属性中的空格,但idon不知道如何将整个fullname传递给.bat文件。