批量:查找具有特定内容的文件并扩展现有名称
Batch: find files with specific content and extend existing name
我有大约 100 个 .xml 文件,但它的文件名不是一目了然的。因此我想寻找一个特定的词并用这个词扩展相关文件。
感谢其他一些有用的条目,我可以部分地弄清楚如何执行此操作,但不知何故文件没有重命名。
有人知道我的代码有什么问题吗?提前谢谢你。
chcp 1252
SET sourcedir=P:\path
FOR /f "tokens=1 delims=." %%a IN ('findstr /c:"3256" "%sourcedir%\*.xml"') DO (
ECHO (REN "%%a.xml" "%%a_3256.xml")
)
pause
chcp 1252
SET "sourcedir=P:\path"
FOR /f "delims=" %%a IN ('findstr /m /c:"3256" "%sourcedir%\*.xml"') DO (
ECHO REN "%%a" "%%~na_3256%%~xa"
)
pause
在您的代码中,您使用 %%a
作为 ren
命令的两个参数,但第二个参数必须只包含名称和扩展名,没有路径。可以用%%~na
来解决,即%%a
引用的文件的文件名(不带路径和扩展名)(%%~xa
是扩展名)
此外,如果 在任何文件中多次找到该字符串,您的代码将尝试重命名该文件两次(或更多次)。最好使用 findstr
中的 /m
开关来仅检索文件列表。
重命名操作仅回显到控制台。如果输出正确,删除 echo
命令。
该死的 MC ND,在我编写了一些科学怪人脚本之后,想出了:
在这个很棒的网站上反复试验之后,我设法想出了(感谢 DOS Batch : remove characters from string in a FOR loop )
@ECHO OFF
set pathd=C:\SomePathHere
setlocal enabledelayedexpansion
for /f %%a in ('findstr /ic:SearchString %pathd%\*.xml') do (
set str=%%a
set str=!str:^:=!
echo !str!
)
我有大约 100 个 .xml 文件,但它的文件名不是一目了然的。因此我想寻找一个特定的词并用这个词扩展相关文件。 感谢其他一些有用的条目,我可以部分地弄清楚如何执行此操作,但不知何故文件没有重命名。
有人知道我的代码有什么问题吗?提前谢谢你。
chcp 1252
SET sourcedir=P:\path
FOR /f "tokens=1 delims=." %%a IN ('findstr /c:"3256" "%sourcedir%\*.xml"') DO (
ECHO (REN "%%a.xml" "%%a_3256.xml")
)
pause
chcp 1252
SET "sourcedir=P:\path"
FOR /f "delims=" %%a IN ('findstr /m /c:"3256" "%sourcedir%\*.xml"') DO (
ECHO REN "%%a" "%%~na_3256%%~xa"
)
pause
在您的代码中,您使用 %%a
作为 ren
命令的两个参数,但第二个参数必须只包含名称和扩展名,没有路径。可以用%%~na
来解决,即%%a
引用的文件的文件名(不带路径和扩展名)(%%~xa
是扩展名)
此外,如果 在任何文件中多次找到该字符串,您的代码将尝试重命名该文件两次(或更多次)。最好使用 findstr
中的 /m
开关来仅检索文件列表。
重命名操作仅回显到控制台。如果输出正确,删除 echo
命令。
该死的 MC ND,在我编写了一些科学怪人脚本之后,想出了:
在这个很棒的网站上反复试验之后,我设法想出了(感谢 DOS Batch : remove characters from string in a FOR loop )
@ECHO OFF
set pathd=C:\SomePathHere
setlocal enabledelayedexpansion
for /f %%a in ('findstr /ic:SearchString %pathd%\*.xml') do (
set str=%%a
set str=!str:^:=!
echo !str!
)