sha*_*oth 7 windows shell scripting cmd
我目前正在尝试编写一个.cmd Windows Shell脚本,它将迭代一组文件夹.但是,即使是以下最简单的脚本:
echo "%ROOT%"
for %%f in ("%ROOT%\Binaries\" ) do (
echo "%%f"
if not exist "%%f\Subfolder"
md "%%f\Subfolder"
)
Run Code Online (Sandbox Code Playgroud)
输出:
CurrentDir>echo "<ActualPathToRoot>"
"<ActualPathToRoot>"
%f\Subfolder was unexpected at this time
CurrentDir>if exists "%f\Subfolder"
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?如何更改该脚本以使其迭代该文件夹,一旦看到没有名为"Subfolder"的子文件夹,它就会创建该子文件夹?还有一个关于编写这样的脚本的好教程吗?
对于(子)文件夹迭代,您需要使用不同的for参数.
所以如果你想列出C的所有目录:你应该这样做:
for /d %%A in (C:\*) do echo %%A
Run Code Online (Sandbox Code Playgroud)
请注意/d指示目录的参数.要进入子目录,您需要进行递归/r
for /r C:\Windows %%A in (*.jpg) do echo %%A
Run Code Online (Sandbox Code Playgroud)
这将遍历所有寻找JPG的Windows子目录.你应该能够做到这一点/d /r,这个参考建议你可以 - 我根本不能,但也许你能做到这一点?
我快速记下的解决方法是dir在for循环中执行所有目录中的一个:
for /f "delims=" %%A in ('dir /ad/s/b') do echo %%A
Run Code Online (Sandbox Code Playgroud)
请注意,dir它与/ad/s/b执行目录的递归列表一起使用,打印找到的目录的名称.
有了这些工具,您就可以使用if-subfolder构造了.请注意,您可能需要
这对我有用:
echo %ROOT%
for /D %%f in (%ROOT%\Binaries\*) do echo %%f && if not exist %%f\Subfolder md %%f\Subfolder
Run Code Online (Sandbox Code Playgroud)