我创建了一个脚本并希望它遍历目录中的所有文件。 但我没有那样做.. 我创建另一个脚本来应用脚本(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的地方做什么..
如果有人可以提供帮助,我将不胜感激。谢谢:)
答案 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!.
)