我有一個腳本,除了一行之外,它可以完成我期望它所做的一切。延遲擴展在延遲擴展中不起作用
我之前做過類似的工作,但是我無法得到這個工作。
我已經得到了代碼是在這裏
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
::Set Path to be folder of Sage Files
SET PATH=C:\Welcome\Progs\SitesDataSetups\GeorgeYarmouth
::set date variables
for /f "tokens=1" %%i in ('date /t') do set thedate=%%i
set mm=%thedate:~3,2%
set dd=%thedate:~0,2%
set yyyy=%thedate:~6,4%
::Set T_DAY variable to date in ddmmyy format
set T_DAY=%dd%%mm%%yyyy:~2%
c:
cd\
cd %path%
for /f "usebackq tokens=* delims= " %%P in (`dir sage*.csv /od /b`) do (
set SAGE=%%P
set SAGE2=!SAGE:~0,8!_EDITED
set EODNUM=!SAGE:~4,4!
for /f "tokens=* delims= " %%A in (%%P) do (
echo %EODNUM%
set S=%%A
***This line is the problem***
set S=!S:%T_DAY%=%EODNUM%!
echo.!S! >> %PATH%\TEST\!SAGE2!.csv
)
)
endlocal
我期待所將採取的CSV文件的每一行,並取代它與本身,除了與字符串當前日期的更換與變量EODNUM(其中它......只有變量被設置之前它擴大,所以是無)...延遲擴展應該解決這個問題,而是因爲我覺得我可以用這行代碼
set S=!S:%T_DAY%=!EODNUM!!
它對於CMD來說太多了!
我錯過了什麼,還是有更好的方法來編碼? (我不是任何類型的程序員,我寫的大部分代碼都來自試驗和錯誤,並且從其他腳本'借用',所以這可能是一個非常混亂的方式)。
輝煌。工作很好,謝謝... –