bat在目录

时间:2015-08-07 11:30:34

标签: batch-file

遵循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
)

从下面可以看出,我得到了几个人的慷慨帮助。但是因为我没有说清楚,我仍然没有解决问题。感谢大家的耐心等待。 最好的问候,

2 个答案:

答案 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"