删除文件名开头直到“_”
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
)
)
所以我是批处理编程的完全菜鸟,但我有这个小程序可以根据文件名将文件移动到特定文件夹:
@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
)
)