批处理文件循环遍历文件夹中的每个文件

时间:2012-07-23 01:56:21

标签: loops batch-file

我创建了一个脚本并希望它遍历目录中的所有文件。 但我没有那样做.. 我创建另一个脚本来应用脚本(change_content).. 这里是代码,

cd \input

for %%f in (*.txt) do (

            echo "%%~nf"
            "D:\deployment code\change_content" .\"%%~nf".txt
    )

change_content.bat

call :yesterday today -1
for /f "delims=" %%a in (%1) do (
set "val=%%a"
if "!val:~12,10!"=="0001-01-01" (
>> D:\temp\%1_changed.txt echo !val:~0,12!%day%!val:~22!
) else (
>> D:\temp\%1_changed.txtecho %%a     
)
)

我的问题是我不能让脚本读取输入文件,如果我把它作为变量。我只能把实际文件放在自动化过程中没有帮助吗? 这只是我指向输入和输出方向的代码的一部分。 只是想知道我应该在for / f的地方做什么..

如果有人可以提供帮助,我将不胜感激。谢谢:)

1 个答案:

答案 0 :(得分:1)

我将您的问题理解为您在上面的粗体文字中列出的内容。以下应该可以使用,从内存开始,但我现在无法测试,因为我现在没有Windows计算机(并且很高兴我不需要一个人)。

如果您在主程序循环部分遇到问题,请尝试:

setlocal eneabledelayedexpansion

REM:: take \input as param from command line
set top_folder=%~1
set change_content="D:\deployment code\change_content.bat"

for /f "eol=; tokens=1 delims=" %%t in ( 'dir /b !top_folder!\*.txt' ) do (
  REM:: the /b may or may not give yo the full path you need
  REM:: google this if I am wrong

  set file_name=%%~nt
  !change_content! !file_name!

)

如果您对change_content部分感兴趣,请尝试以下操作:

setlocal enabledelayedexpansion

REM:: change_content looping over file_name variable.
set file_name=%~1
for /f "eol=; tokens=1 delims=" %%f in ( 'type "!file_name!"' ) do (
  set line=%%f
  REM::  Do your thang in here with !line!.
)