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コンピュータがないため、テストできません(そして、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 に答える