Batch file 批量修改文件名中带有空格的多个文件
我有一个目录c:\test,其中自动填充了名为PM1 2016-10-06 1.AL1、PM1 2016-10-06 2.AL1、PM1 2016-10-07 1.AL1等的文件。我已经编写了一个批处理脚本(感谢核心代码的Aacini),但我的问题是,它只对一个文件有效,并且文件名中不能有空格。守则:Batch file 批量修改文件名中带有空格的多个文件,batch-file,filenames,spaces,Batch File,Filenames,Spaces,我有一个目录c:\test,其中自动填充了名为PM1 2016-10-06 1.AL1、PM1 2016-10-06 2.AL1、PM1 2016-10-07 1.AL1等的文件。我已经编写了一个批处理脚本(感谢核心代码的Aacini),但我的问题是,它只对一个文件有效,并且文件名中不能有空格。守则: @echo off cd c:\test setlocal EnableDelayedExpansion set LF=^ %do not remove% %these lines% s
@echo off
cd c:\test
setlocal EnableDelayedExpansion
set LF=^
%do not remove%
%these lines%
set "EOL=!LF!" & set "EOL2=!LF!"
for /f "tokens=*" %%a in (c:\test\PM1.AL1) do (
if %%a equ PROP-SUMMARY set "EOL=!LF!"
set /P "=%%a!EOL!" < NUL
set "EOL0=!EOL!" & set "EOL=!EOL2!" & set "EOL2=!EOL0!"
if %%a equ PROP-VALUES set "EOL=,"
) >>c:\test\test.tmp
TYPE c:\test\test.tmp | FIND "" /V > c:\test\PM1_new.AL1"
DEL c:\test\test.tmp
@echo关闭
cd c:\测试
setlocal EnableDelayedExpansion
设置LF=^
%不删除%
%这些行%
设置“EOL=!LF!”&设置“EOL2=!LF!”
对于(c:\test\PM1.AL1)中的/f“tokens=*”%%a,请执行以下操作(
如果%%a equ PROP-SUMMARY集合“EOL=!LF!”
设置/P“=%a!下线!”>c:\test\test.tmp
键入c:\test\test.tmp | FIND”“/V>c:\test\PM1\u new.AL1”
DEL c:\test\test.tmp
如果您对类型行感到好奇,它会将文件中的所有CR更改为CRLFs。@echo off
@echo off
setlocal EnableDelayedExpansion
cd c:\test
set LF=^
%do not remove%
%these lines%
for %%f in (*.*) do (
set "EOL=!LF!" & set "EOL2=!LF!"
(for /f "usebackq tokens=*" %%a in ("%%f") do (
if %%a equ PROP-SUMMARY set "EOL=!LF!"
set /P "=%%a!EOL!"
set "EOL0=!EOL!" & set "EOL=!EOL2!" & set "EOL2=!EOL0!"
if %%a equ PROP-VALUES set "EOL=,"
)) < NUL > test.tmp
TYPE test.tmp | FIND "" /V > "%%f"
)
DEL test.tmp
setlocal EnableDelayedExpansion
cd c:\测试
设置LF=^
%不删除%
%这些行%
对于(*.*)中的%%f,请执行以下操作(
设置“EOL=!LF!”&设置“EOL2=!LF!”
(对于/f“usebackq令牌=*”%%a in(“%%f”)do(
如果%%a equ PROP-SUMMARY集合“EOL=!LF!”
设置/P“=%a!下线!”
设置“EOL0=!EOL!”&设置“EOL=!EOL2!”&设置“EOL2=!EOL0!”
如果%%a equ PROP-VALUES设置为“EOL=,”
))test.tmp
TYPE test.tmp | FIND”“/V>“%%f”
)
DEL test.tmp
您的标题说明您需要它处理多个文件,但如何确定哪些文件?是否需要它处理目录中的所有文件?目录中的所有文件我不阅读任何信息,告诉我具体需要修改的内容。通常有助于提供输入和输出示例。此脚本适用于一个file,PM1.AL1。我需要它来处理PM1 2016-10-07 1.AL1和PM1 2016-10-06 2.AL1等。我想我已经很清楚了,即我需要一个文件名的for循环,它需要能够处理文件名中的空格?您可以方便地包含一个,以便其他用户可以查看它。这非常完美,我的朋友。您对Windows命令的掌握程度很高ne令人羡慕。我所做的唯一更改是将DEL test.tmp移到最后一个括号上方。谢谢!这会重命名文件吗?是的,请检查原始问题:如果将DEL test.tmp
命令移到for
中,文件会被删除几次,但这不是必需的,因为>test.tmp
redirec在插入重定向数据之前,请先删除文件。。。