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

Remove start of filename up to "_"

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

@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”。

希望这是有道理的 - 提前致谢

此致

您需要将 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
    )
)