@ECHO OFF
SETLOCAL
rem The following setting for the directory is a name
rem that I use for testing and deliberately includes spaces to make sure
rem that the process works using such names. These will need to be changed to suit your situation.
SET "sourcedir=u:\your files\t w o"
FOR /f "delims=" %%y IN ('dir /b /a-d "%sourcedir%\* *"') DO (
FOR /f "tokens=1*delims= " %%b IN ("%%y") DO (
IF EXIST "%sourcedir%\%%c" (ECHO Cannot RENAME "%%y" to "%%c" - already exists) ELSE (
ECHO REN "%sourcedir%\%%y" "%%c"
)
)
)
GOTO :EOF
2条答案
按热度按时间3okqufwl1#
字符串
应用真实的数据前,务必先验证测试目录。
注记
%y
在命令提示符下是正确的,但metavariables
(如%%y
)在批处理文件中需要一个双%
。所需的REN命令仅用于测试目的。验证命令正确后,将
ECHO REN
更改为REN
,以实际重命名文件。相当简单的过程-处理一个目录列表匹配的filemask的文件名只,tokenise作为尝试,测试是否重命名是可能的,如果它不是报告和重命名,如果它是。
0qx6xfy62#
使用PowerShell,它更容易。最简单的方法涉及正则表达式替换
字符串
或完整命令
型
-WhatIf
/-wi
用于空运行,删除它以进行真实的的重命名"^.+? "
匹配第一个“单词”及其后面的下一个空格并删除,而".+? (.*)"
捕获字符串的其余部分并替换为捕获的内容