因此,我有一个 python 命令,它将文件路径作为命令行参数。假设convert.py
。
在 Linux 上,我使用以下脚本以递归方式使用 glob 对文件夹中的每个文件运行它
for f in $1/**/*
do
python ./convert.py $f
done
我可以称之为sh ./script.sh src
。
在 Windows 上有没有办法做到这一点?我发现这虽然很接近但我还是没太明白。
答案1
一个快速的想法是使用和Get-ChildItem
选项 并使用 和它的选项来执行 python 脚本并将完整的目录路径传递给它。-Directory
-Recurse
Start-Process
-ArgumentList
1.简单脚本(用于测试特定文件夹)
$src = "C:\Folder\Path";
(Get-ChildItem $src -Directory -Recurse).FullName | % { Process {
Start-Process Python -ArgumentList "./convert.py $($_)" } };
2. 带有执行参数值的 PowerShell 脚本
$src = $args[0];
(Get-ChildItem $src -Directory -Recurse).FullName | % { Process {
Start-Process Python -ArgumentList "./convert.py $($_)" } };
执行上述 #2 PowerShell 脚本
powershell.exe -ExecutionPolicy Bypass -File "C:\PowerShell\PScript.ps1" "C:\Folder\123\678"
3. 再举一个例子(递归文件)
笔记:如果 Python 脚本需要传递文件路径,请使用此示例和参数-File
传递文件路径。但我不确定 Python 脚本在做什么。
$src = "C:\Folder\Path";
(Get-ChildItem $src -Recurse -File).FullName | % { Process {
Start-Process Python -ArgumentList "./convert.py $($_)" } };
支持资源
- 获取子项
- 数组
- ForEach 对象
标准别名对于 Foreach 对象:'
%
' 符号,ForEach - 开始进程