2009年5月7日星期四

根据当前目录名合并新的文本

当前目录下有一些txt,要将这些txt合并为一个文本,并将文件名取为当前目录名。
脚本:


@echo off
for /f "delims=" %%i in ("%cd%") do (
if exist %%~ni.txt del %%~ni.txt
:* 有问题.
for %%a in (*.txt) do type "%%a">>"%%~ni.txt"
)



上面版本有一个问题。例如,如果当前目录名为5,本来有1.txt,2.txt,3.txt三个文本,所得到的5.txt将是原本3个文本内容的两份长度。猜想是由于上述“有问题”的那个语句,是按txt文件名顺序执行的。因为5.txt排序在原本三个文本之后,执行完原本三个txt 写入命令,当前目录下已然生成有5.txt,“有问题”语句将5.txt也写入新的5.txt,照成内容的重复。

修订脚本:


@echo off
for /f "delims=" %%i in ("%cd%") do (
if exist %%~ni.txt del %%~ni.txt

:*修改后的语句
for /f "delims=" %%a in ('dir /b *.txt') do type "%%a">>"%%~ni.txt"
)



没有评论:

发表评论