1 行を除けば、私が期待するすべてのことを実行するスクリプトがあります。
以前も同様のことをしましたが、これを機能させることはできません。
私が持っているコードはここにあります
@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
現在の日付を変数 EODNUM に置き換える文字列を除いて、csv ファイルの各行を取得し、それ自体で置き換えることを期待していました (これは実行されます...変数のみが設定される前に展開されるため、は何もありません)...遅延展開はこれを解決するはずですが、このコード行を使用できます
set S=!S:%T_DAY%=!EODNUM!!
CMDには!が多すぎると思うからです。
何か不足していますか、これをコーディングするより良い方法はありますか?? (私はどんな種類のプログラマーでもなく、私が書くコードのほとんどは試行錯誤と他のスクリプトからの「借用」から来ているので、これを行うには非常に厄介な方法かもしれません)。