2013-03-14 94 views
0

我有一系列的命令,从文件夹中AE将文件移动到一个文件夹X,如:仅在根目录中的.bat的子目录中运行.bat?

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中运行的蝙蝠来整理按名称基于他们的名字到文件夹中的文件:

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

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

回答

1

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

你可以从“父”批处理文件这样做:

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

还是从“子”批处理文件中,你可以迫使它总是设置其当前目录中包含该批处理文件的目录:

pushd "%~dp0" 
:: do your stuff 
popd 
+0

这正是我所需要的,谢谢 – Insarov 2013-03-14 19:24:35

+0

太棒了!如果回答您的问题,请将答案标记为“已接受”。这将有助于其他人寻找同一问题的答案,同时也感谢回答者提供的一些“声誉”。最近你问的其他问题也是如此 - 从你的评论看来,其中一些问题很有用,但没有一个被标记为“接受”。 – 2013-03-14 19:28:21