删除文件名的开头到“_”

时间:2016-03-01 09:36:49

标签: windows file batch-file file-rename

所以我是一个批处理编程的完整菜鸟,但我有这个小程序,它会根据文件名将文件移动到特定文件夹:

@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 个答案:

答案 0 :(得分: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
    )
)