0

我创建了一个脚本,并希望它遍历目录中的所有文件..但我没有这样做..我创建了另一个脚本来应用脚本(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 地方做什么..

如果有人能对此提供帮助将不胜感激..谢谢:)

4

1 回答 1

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!.
) 
于 2012-07-23T03:12:09.753 回答