2014-02-07 80 views
0

我試圖創建一個bat文件,從這個多發的文件中刪除烯我們部分文件名:蝙蝠腳本來刪除總是相同

即。每月銷售和取消en-us.pdf將被重新命名爲每月銷售和取消.pdf。

下面的這個腳本可以在本地機器上工作。但是,如果我定義了一個共享驅動器的文件磁盤位置,然後運行它,則出現此錯誤:

未找到文件 系統找不到指定的文件。

下面是該腳本我正在使用:

@echo off 
setlocal enabledelayedexpansion 
set deletestring=-en-us 
set filesharelocation=\\companyname\DEV\Testing 
for /f "delims==" %%F in ('dir %filesharelocation% /b /l *-en-us.pdf ^| find "%deletestring%"') do (
    set oldfilename=%%F 
    set newfilename=!oldfilename:%deletestring%=! 
    Ren "!oldfilename!" "!newfilename!" 
    ) 

誰能幫助?謝謝。

回答

1

由於它被編碼,%%F返回dir命令的輸出內容,也就是隻有沒有路徑的文件名。

如果它是從包含這些文件的同一個目錄執行的,則沒有問題,但是當您再次運行其他驅動器/文件夾的內容時,如%%F不包含該文件的路徑,不在比批處理文件相同的文件夾中,線

Ren "!oldfilename!" "!newfilename!" 

(與oldfilename從%%˚F獲得)不包含任何路徑,只有文件名。

最簡單的解決方案是添加路徑。

Ren "%filesharelocation%\!oldfilename!" "!newfilename!" 

或者,你可以改變當前驅動器的文件夾與文件

pushd "%filesharelocation%" 
for /f "delims==" %%F in ..... 
    ..... 
) 
popd 
+0

謝謝,使用該作品: PUSHD 「%filesharelocation%」 FOR/F 「delims ==」 %% F in ..... ..... ) popd – Andy