我需要你的帮助。
我有多个.txt files
以下命名法:
test-test-test-201602291545.txt
test-test-test-test-test-201602291540.txt
我想从文件名中删除“test”子字符串,最终结果应该是:
201602291545.txt
,
201602291540.txt
请使用简单的批处理文件让我知道如何做到这一点。
答案 0 :(得分:0)
基本问题是您需要某种方法从文件名的开头拆分所有test-
字符串。下面的代码使用带有FOR
的{{1}}循环来执行此操作。
重复的线条可能会得到改善。 "delims=-"
可以(应该)在这里发出声音。我做了一些搜索,但没有找到任何东西。
警告:未经编辑的代码
dbenham
如果在所需的文件名开始后“test-”不能出现,则可能是类似下面的更好的方法。请注意,在SETLOCAL ENABLEDELAYEDEXPANSION
SET "RESULT="
FOR /F "usebackq tokens=*" %%a IN (`DIR /B /A:-D "test-*.txt"`) DO (
SET "RESULT="
FOR /F "tokens=1-30 delims=-" %%b IN ("%%~a") DO (
IF /I "%%b" NEQ "" IF /I "%%b" NEQ "test" (SET "RESULT=%%b")
IF /I "%%c" NEQ "" IF /I "%%c" NEQ "test" (SET "RESULT=%%c")
IF /I "%%d" NEQ "" IF /I "%%d" NEQ "test" (SET "RESULT=%%d")
IF /I "%%e" NEQ "" IF /I "%%e" NEQ "test" (SET "RESULT=%%e")
IF /I "%%f" NEQ "" IF /I "%%f" NEQ "test" (SET "RESULT=%%f")
IF /I "%%g" NEQ "" IF /I "%%g" NEQ "test" (SET "RESULT=%%g")
IF /I "%%h" NEQ "" IF /I "%%h" NEQ "test" (SET "RESULT=%%h")
IF /I "%%i" NEQ "" IF /I "%%i" NEQ "test" (SET "RESULT=%%i")
IF /I "%%j" NEQ "" IF /I "%%j" NEQ "test" (SET "RESULT=%%j")
IF /I "%%k" NEQ "" IF /I "%%k" NEQ "test" (SET "RESULT=%%k")
IF /I "%%l" NEQ "" IF /I "%%l" NEQ "test" (SET "RESULT=%%l")
IF /I "%%m" NEQ "" IF /I "%%m" NEQ "test" (SET "RESULT=%%m")
IF /I "%%n" NEQ "" IF /I "%%n" NEQ "test" (SET "RESULT=%%n")
IF /I "%%o" NEQ "" IF /I "%%o" NEQ "test" (SET "RESULT=%%o")
IF /I "%%p" NEQ "" IF /I "%%p" NEQ "test" (SET "RESULT=%%p")
)
IF "!RESULT!" NEQ "" (
ECHO RENAME "%%~a" !RESULT!
)
)
命令中删除ECHO
之前,不会进行重复名称检测。
RENAME