遵循Foxidrive的建议, 为了清楚起见,我编辑了我的问题。
我想将命令行列表应用于名为“Jan 1”的主文件夹中所有子文件夹中的文件。我试图创建一个批处理文件,将命令行应用于每个子文件夹中的文件,而不是通过“cd”手动更改文件夹。我所拥有的是30个文件夹,其中包含每个文件夹中的一堆文件。它们是来自30个不同参与者的数据集。我想知道的是如何一个接一个地进入副搜索器。
我的第一次尝试是使用“For”循环。
“C:\ Users \ u00854141 \ Documents \ PES \ Record2016 \ Jan 1”。 我想在这30个文件夹中的文件上运行命令A,B和C.
@ECHO OFF
CD C:\Users\u00854141\Documents\PES\Record2016\Jan 1
For /D %%g in (*) do (
command A
command B
command C
)
从下面可以看出,我得到了几个人的慷慨帮助。但是因为我没有说清楚,我仍然没有解决问题。感谢大家的耐心等待。 最好的问候,
答案 0 :(得分:1)
您可以在cmd /c
之后更改命令,我让您可以理解发生了什么。
@ECHO OFF
forfiles /p "C:\Users\u00854141\Documents\PES\Record2016\Jan 1" /s /c "cmd /c if @isdir == FALSE (echo FILE - DO COMMAND HERE) else (echo. & echo DIR - @path & echo.)"
pause >nul
答案 1 :(得分:0)
固定代码,使用for /R
:
@echo off
pushd .
cd /D "C:\Users\u00854141\Documents\PES\Record2016\Jan 1"
for /R %%F in (*) do (
pushd "%%~dpF"
rem command_A "%%~nxF"
rem command_B "%%~nxF"
rem command_C "%%~nxF"
popd
)
popd
for /R
循环以递归方式遍历所有(子)目录中的所有文件
在循环体中,pushd
在转到3个命令之前临时更改到当前目录; popd
恢复原始目录
命令占位符中的"%%~nxF"
部分是指当前项的纯文件名;如果要传递命令的完整路径,请改为使用"%%~fF"
。