• ベストアンサー

ファイル名取得BATで改行させたい

@echo off setlocal enabledelayedexpansion set "filelist=" for %%f in (%*) do ( if defined filelist ( set "filelist=!filelist! %%~nxf" ) else ( set "filelist=%%~nxf" ) ) echo !filelist! | clip 複数ファイルからファイル名を取得する際に改行で区切りたいのですが

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

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

最初のは、 @echo off set T=%tmp%\tmp.txt type nul>%T% for %%f in (%*) do ( >>%tmp%\tmp.txt echo %%~nxf ) type %T% | clip で、いいです。

その他の回答 (1)

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

普通のバッチファイルの変数は1行しかセット出来ないので、一時的にテキストファイルを作ってそれに書き込んで、clipコマンドには、そのテキストファイル読み込んで使う。 @echo off setlocal enabledelayedexpansion set T=%tmp%\tmp.txt type nul>%T% for %%f in (%*) do ( set file=%%~nxf set file=!file:"=! >>%tmp%\tmp.txt echo !file! ) type %T% | clip ----------------------------- 一時ファイルを作りたくないなら、複数行の変数がセットできる PowerShell を入れて処理する。 @echo off setlocal enabledelayedexpansion set "filelist=" for %%f in (%*) do ( if defined filelist ( set "filelist=!filelist!<%%~nxf" ) else ( set "filelist=%%~nxf" ) ) powershell -c "'%filelist%'.Split('<') -join \"`n\" | clip"

関連するQ&A

専門家に質問してみよう