仅在根目录中的.bat的子目录中运行.bat?

时间:2013-03-14 18:50:15

标签: batch-file file-organization

我有一系列命令将文件从文件夹A-E移动到一个文件夹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"

一旦他们在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\。有没有办法告诉它只在X内运行X\*.bat?除了将*.pdf更改为X\*.pdf之外?我正在尝试编写,以便每个.bat尽可能便携。

1 个答案:

答案 0 :(得分:1)

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

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

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

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

pushd "%~dp0"
:: do your stuff
popd
相关问题