• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:コマンドプロンプトでファイル名を取得し別の場所にコ)

コマンドプロンプトでファイル名を取得・コピーする方法

このQ&Aのポイント
  • Gドライブにある複数のファイル名をそのまま別の場所にコピーしたいユーザー向けの情報。
  • 特定のフォルダからファイルを取得し、日時を付加した新しい名前で別のフォルダに保存する方法を解説。
  • カスタマイズ可能なバッチファイルを作成し、簡単にファイルのコピーを行う手順について触れる。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.4

コピー先のファイル名の yyyymmdd_HHMMSS の部分ですが、何を意味するのかの説明が無いです。 説明が無いと言うことはみたままの英字と下線の並んだ文字列という意味になりますが、おそらくそうじゃなくて、説明漏れですよね? 20231120_225933 のように日時を意味する文字列にしたいのだと思いますが、コピー作業を行う日時なのか、ファイルの更新タイムスタンプなのか不明です。 コピー作業を行う日時の場合: for /f "delims=/:. tokens=1-6" %%A in ("%DATE%/%TIME: =0%" ) do set YMDHMS=%%A%%B%%C_%%D%%E%%F for %%X in (G:\aaa\test*.txt) do copy %%X D:\hokan\%%~nX_%YMDHMS%.txt ファイルの更新タイムスタンプの場合: この場合は秒は取得できないので00固定。秒まで必要なら別のツールを使う必要がある。 for %%X in (C:\aaa\test*.txt) do call :COPY %%X exit /b :COPY for /f "tokens=1-5 delims=/: " %%A in ("%~t1" ) do set YMDHMS=%%A%%B%%C_%%D%%E00 copy %1 D:\hokan\%~n1_%YMDHMS%.txt exit /b いずれも、delimsの文字列の後、引用符の手前に空白があります。

okjitta23
質問者

補足

説明不足で申し訳ありませんでした。 yyyymmdd_HHMMSS  はコピー作業時の時間でした。 教えていただいたコマンドを組み合わせて、希望通りの内容のバッチを作成することができました。 ありがとうございました。

その他の回答 (3)

  • UY-Scuti
  • ベストアンサー率85% (17/20)
回答No.3

すみません、ちょっと変えます。 powershell -c "'#'+(gc '%~f0' -Raw) | iex" &exit/b ls G:\aaa\test*.txt | ? { $_.BaseName -match 'test[0-9]*$' } | % { $ymd='{0:yyyyMMdd_HHmmss}' -f (Get-Date) }{ cp $_ "D:\hokan\$($_.BaseName)_$($ymd)$($_.Extension)" } ------------------------------------------------------------ 一般的なバッチファイルでは、 set ymd=%date:/=% set hms=%time::=% set hms=%hms:~,6% set hms=%hms: =0% pushd "G:\aaa" for /f %%i in ('dir /b test* ^| findstr /r "test[0-9]*\.txt"') do ( copy "%%i" "D:\hokan\%%~ni_%ymd%_%hms%%%~xi" ) ---------------------------------------------------------------- testの後に文字が付く場合は数値としています。 test1 とか test2 testA とか testB は対象にしていません。

  • UY-Scuti
  • ベストアンサー率85% (17/20)
回答No.2

拡張子 txt なので、2行目を ls G:\aaa\test* | ? { ↓↓ ls E:\aaa\test*.txt | ? { に変えてください。

  • UY-Scuti
  • ベストアンサー率85% (17/20)
回答No.1

以下をバッチファイルとして実行。 powershell -c "'#'+(gc '%~f0' -Raw) | iex" &exit/b ls G:\aaa\test* | ? { $_.BaseName -match 'test[0-9]*$' } | % { $ymd='{0:yyyy_MMdd_HHmmss}' -f (Get-Date) }{ cp $_ "D:\hokan\$($Matches.0)_$ymd$($_.Extension)" }