2013-03-14 96 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