所以我是一个批处理编程的完整菜鸟,但我有这个小程序,它会根据文件名将文件移动到特定文件夹:
@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”。
希望这是有道理的 - 提前谢谢
最好的问候
答案 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
)
)