2017-02-28 197 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