使用批处理文件调用递归目录搜索

时间:2015-03-27 10:13:12

标签: batch-file

我正在使用以下代码段从文件中删除CRLF。 如果指定目录,是否有办法调用此文件从每个文件中删除所有CRLF。

@echo off
setlocal DisableDelayedExpansion 
(for /F "usebackq delims=" %%a in (%1) do ( 
    set /P "=%%a"< NUL )
)>%2

我在根目录下有很多目录,每个目录中都有多个文件。

1 个答案:

答案 0 :(得分:1)

添加外部for /r "%~1" %%I in (*.mask)循环,并将for /F循环更改为%%I。在cmd控制台中,键入help for以获取更多信息。在这里,看看是否有效:

@echo off
setlocal enabledelayedexpansion

rem // for each .txt file recursively in source:
for /R "%~1" %%I in (*.txt) do (

    rem // get relative path + filename of %%I
    set "relative=%%I" & set "relative=!relative:%~1=!"

    rem // create relative directory structure in destination
    for %%a in ("%~2\!relative!") do md "%%~dpa" 2>NUL

    rem // for each line of src, output without line break to dest
    (
        for /F "usebackq delims=" %%a in ("%%~fI") do ( 
            set /P "=%%a"< NUL
        )
    ) >"%~2\!relative!"
)