2016-03-01 36 views
2

这样的IM在批处理编程一个完整的小白,但我有这个小程序将文件移动到基​​于文件名的特定文件夹:移除开始上升到“_”

@echo off 
for %%a in (*.jpg) do (
echo processing "%%a" 
    for /f "tokens=1 delims=_" %%b in ("%%~nxa") do (
    move "%%a" "%%b" >nul 
) 
) 
pause 

我要扩展这个程序来重命名一些文件。 程序正在移动的文件全部命名为:“0_107”或“151_107”。它们分别被移动到名为“0”和“151”的文件夹中。

现在我还希望它可以切掉之前的所有内容,包括下划线。 这意味着“151_107”仍然应该被移动到文件夹“151”,但该文件应该被命名为“107”。

希望这是有道理的 - 在此先感谢

问候

回答

1

您需要的FOR-参数移动到一个变量,那么你就可以删除与*<text>=语法的主导作用。

setlocal EnableDelayedExpansion 
for %%a in (*.jpg) do (
    echo processing "%%a" 
    for /f "tokens=1 delims=_" %%b in ("%%~nxa") do (
     set "name=%%~a" 
     set "name=!name:*_=!" 
     echo New destination %%b\!name! 
     move "%%~a" "%%b\!name!" >nul 
    ) 
) 
+0

请原谅我的无知,但如何将这看起来实施到我的代码段? – AVP

+0

谢谢jeb,它完美的作品! – AVP