2017-05-08 68 views
0

我在文件夹中有很多* .txt文件。根据内容标准重命名大量的txt文件(批处理脚本帮助)

该文本文件看起来像一个字典,其中有一些缩写 并且该单词的含义与它相邻。对于例如

FILE1.TXT

aaa-bbb-ccc 
    = this is a abc 

FILE2.TXT

aa-dd-ee 
    = blah blah blah 

file3.txt

aaa-ff-xxxx  
    = have a nice day 

file4.txt

mm-aaa-xx 
    = batch script 

等。

缩写: 1.可以在2到4个字符范围内,它可以是aaa,mm或任何文本。
2.他们大多是在第二行,第一行是空白

我想知道是否可以使用批处理脚本 要经过该文件夹读取每个文件的内容, 并将其重命名根据缩写。如何进行?

AAA BBB-ccc.txt

AA-DD-ee.txt

等。

预先感谢您

回答

0

使用普通for循环来处理每个文件。使用for /f循环来处理文件中的行。作为for /f忽略空文件,也不要紧,如果第一行是空的或不:

@echo off 
setlocal enableDelayedExpansion 
for %%a in (*.txt) do (
set "new=" 
for /f "usebackq delims==" %%b in ("%%a") do if not defined new set "new=%%b" 
ECHO ren "%%a" "!new!%%~xa" 
) 

了解更多信息,请阅读for /?

注意:出于安全原因,ren命令仅通过将其回显至屏幕而被禁用。一旦你确认,删除ECHO,表示输出正常。

编辑=可能在同一行上。或者不...要解决它,请使用delims==。 (如果您遇到空间问题,并且有无空格的缩写,请延长... delims== "

+0

您好Stephan,感谢您的回复。我运行代码。它似乎接近。但是,在许多文件中,由于等号和细节位于同一行,因此无法处理。例如xxx-yyy-zzz =在同一行上......可以将它限制为“=”符号吗? – Azh

+0

'“usebackq delims ==”'应该解决这个问题。 – Stephan

+0

谢谢斯蒂芬! 它运作良好..祝你有美好的一天 – Azh