• ベストアンサー

ファイルコピー

以前、タイムスタンプが最新のファイルをコピーするスクリプトを教えてもらったんですが、1つ前のファイルもコピーするにはどのように記載すればいいのでしょうか? どなたか教えて下さい。 for /f "delims=" %%F in ('dir /b /od c:\nepia') do set F=%%F

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4903/10364)
回答No.3

for文はdoの後の文を繰り返し実行します。 >for文の中にDo~loop文を記載すればいいのでしょうか? Do loopということはVB系はご存知ということでしょうか。for文はfor eachに似てますね。 for %%A in (one two tree four) do echo %%A for /f %%A in ('dir /b /od') do echo %%A ループの中で複数の文を実行したいときは、 (1) & で区切って一行に書く (2) 括弧を使って複数行に書く (3) サブルーチンにしてcall文を書く の方法がありますが、ちょっと説明が難しいある理由により、サブルーチン化するのが間違いにくいです。#1の回答もそうしてます。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • notnot
  • ベストアンサー率47% (4903/10364)
回答No.2

>>set N+=1 >ここの部分なんですが、どういった処理なんでしょうか? すいません書き損ねました。set /a N+=1 が正しいです。 /a をつけると算術演算になります。Nに1を足しこむ、つまり、set N=N+1 ということです。

SUPERH2O
質問者

補足

なるほど、set文は分かりました。 for文について調べているんですが、イマイチ分かりません。 For文を正確に書くとすればどのように記載すればいいのでしょうか? 見た感じだと、for文の中にDo~loop文を記載すればいいのでしょうか?

すると、全ての回答が全文表示されます。
  • notnot
  • ベストアンサー率47% (4903/10364)
回答No.1

そういうことなら今度は新しいほうから表示させて最初の2行を処理するといいでしょう。 set N=0 for /f "delims=" %%F in ('dir /b /o-d c:\nepia') do call :sub "%%F" goto :eof :sub set N+=1 if %N% gtr 2 goto :eof copy %%1 c:\to-dir\ などと処理したいことを書く goto :eof

SUPERH2O
質問者

補足

回答ありがとうございます。 一通り構文の内容を調べているんですが、知識が浅いもので下記の内容について教えてください。 >set N+=1 ここの部分なんですが、どういった処理なんでしょうか?

すると、全ての回答が全文表示されます。

関連するQ&A