2017-02-28 195 views
0

我想替換現有文件名的一部分。這裏 分隔符「_」在Windows命令(批處理文件)中重命名文件名的一部分

說文件名是:test_two.txt

文件名的一部分,取而代之的是在這裏測試:

所以新名字將是:Pass_two.txt

我已經寫了下面的東西來實現:

for %%f in ("C:\Test_bat\rename file part\*.txt") do ( 
echo "%%~nxf" 
SET FNAME="%%~nxf" 
) 

    for /f "tokens=1,* delims=_" %%a in (%FNAME%) do (
    echo %%b 
    echo %%~xb 
**-- not sure why i am not getting anything in %%b** 
) 
執行通過Windows上面的代碼時

命令PROMT我所面臨的問題如下:

做(在這個時候

==========更新解決意外== =

我是缺少以下引號敵人爲 FOR/F 「令牌= 1,* delims = _」 %%一個在(「%FNAME%」

+0

你需要的**'do'之間的空間**和左括號**'( '**。此外,你可以這樣做** Ren:C:\ Test_bat \重命名文件part \ test _ *。txt「」pass _ *。txt「** ** – Compo

+0

@Compo我必須從其他文件名中獲取的名稱,它沒有預先定義 – Malcolm

回答

0

下面是實現的一種方式你的目標。 (最常見的方法是使用_分隔符來使用for循環和tokenising)

@Echo Off 
For %%A In ("C:\Test_bat\rename file part\*_*.txt") Do (Set "_=%%A" 
    SetLocal EnableDelayedExpansion 
    Ren "%%A" "part_!_:*_=!" 
    EndLocal) 
+0

tx爲您的幫助最後,我完成了需要的東西,謝謝你指出空間事後做。 – Malcolm