嗨,如何读取另一个文本文件中的文件。我有带有路径名的文本文件,例如
d:\cifs\fslit.txt 内容:
d:cifskatowicecifs_list.txt
d:cifskrakowcifs_list.txt
d:cifsgdanskcifs_list.txt
d:cifsberlincifs_list.txt
等可能是数百行。
在这些文件中的每个文件中,我们都有类似"D:\CIFS\katowice\cifs_list.txt">的路径:
\katowicecifsprojectcurrentboxproj1
\katowicecifsprojectcurrentboxide1
\katowicecifsprojectcurrentboxarea_b
\katowicecifsprojectcurrentboxide2
等我想将这些文件的所有路径(内容(放在一个文件中并删除双峰。
对任何建议感到满意....
这里有一个选项。 它确实有一些警告。 如果文件列表不以行尾结尾,则上一个文件的最后一行和下一个文件的第一行将在输出文件中位于同一行上。
@echo on
REM Read list of files
(FOR /F "usebackq delims=" %%G IN ("d:cifsfslit.txt") DO (
REM output all files to a single combined file
TYPE "%%~G"
))>combined.txt
REM Call out to function to remove duplicates from file.
CALL :DEDUPE "combined.txt"
GOTO :EOF
:DEDUPE
:: Remove duplicates from file
setlocal disableDelayedExpansion
set "file=%~1"
set "sorted=%file%.sorted"
set "deduped=%file%.deduped"
::Define a variable containing a linefeed character
set LF=^
::The 2 blank lines above are critical, do not remove
sort "%file%" >"%sorted%"
>"%deduped%" (
set "prev="
for /f usebackq^ eol^=^%LF%%LF%^ delims^= %%A in ("%sorted%") do (
set "ln=%%A"
setlocal enableDelayedExpansion
if /i "!ln!" neq "!prev!" (
endlocal
(echo %%A)
set "prev=%%A"
) else endlocal
)
)
>nul move /y "%deduped%" "%file%"
del "%sorted%"
GOTO :EOF