0

我有一系列命令将文件从文件夹 AE 移动到一个文件夹 X,例如:

for /f "delims=" %%a in (
    'dir /s /b ^| find /i "\Folder A\"'
    ) do move "%%a" "G:\Folder X"
for /f "delims=" %%a in (
    'dir /s /b ^| find /i "\Folder B\"'
    ) do move "%%a" "G:\Folder X"

ETC

并且一旦它们在 X 中,在 X 中运行 .bat 以根据它们的名称将这些文件按名称排序到文件夹中:

for /f "tokens=2 delims= " %%b in ('dir /b *.pdf') do (
    md %%b > nul 2>&1
    move *%%b*.pdf %%b
    )

但它似乎想在根文件夹中的 X 中运行 .bat 而不仅仅是\X\.bat 有没有办法告诉X\*.bat它只在 X 中运行?除了更改*.pdfX\*.pdf? 我正在尝试编写,以便每个 .bat 尽可能便携。

4

1 回答 1

1

如果我理解正确,唯一的问题是当前目录没有改变,并且您想将其更改为G:\Folder X在该文件夹中运行批处理文件时。

您可以从“父”批处理文件中执行此操作:

pushd "G:\Folder X"
call "G:\Folder X\process.bat"
popd

或者从“子”批处理文件中,您可以强制它始终将其当前目录设置为包含批处理文件的目录:

pushd "%~dp0"
:: do your stuff
popd
于 2013-03-14T19:22:52.520 回答