• ベストアンサー

batファイルで、引数のファイルリストを作りたい。

あるbatファイルを作成しようとしています。 目的は、複数のファイルを選択して、batファイルにドラッグすると、そのパスをテキストファイルに書き込んでほしいのです。 for文を使おうと思ったのですが、以下の内容だとうまくいきません。 type NUL > "./test.txt" for %%i in (%*) do echo %%i >> "./test.txt" 空のファイルは作成されるのですが、ファイル名は記録されません。 何か方法があれば教えていただけないでしょうか?

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

お使いの環境は何でしょう? 9x系の場合 %*が使えないようですが NT系ならその構文で書き出すようですよ また NT系の場合ドラッグアンドドロップで起動した際に書き出されるファイルは C:\Docuemnts and Settings\ユーザー名 フォルダ固定のようです ショートカットを作成して『作業フォルダ』を指定してショートカットにD&Dすれば別ですけど 9x系でしたら @echo off type NUL > .\text.txt :fnext for %%f in ( %1 ) do echo %%f shift if "%1" == "" goto end goto fnext :end といった具合で良いようです

tennyasu
質問者

お礼

OSを書き忘れていました。申し訳ないです。 OSによっても違うのですね。MS-DOSプロンプトとコマンドプロンプトの違いなんでしょうか? 取りあえず、どうにか解決できそうです。 ありがとうございました。

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4843/10252)
回答No.1

内容に間違いはないようです。 ファイルが作成される場所は間違って見てませんか? 特に指定しないと、ホームフォルダに作られますが。 XPだとC:\Documents and Settings\ユーザ名\test.txt

tennyasu
質問者

お礼

先ほど確認したら、確かにその場所に作られていました・・・。 マヌケでした。ありがとうございます。

関連するQ&A

  • BATファイルでプログラムファイルの書き換え

    ----------------------------------------------------------------- @echo off set TEST="C:\Program Files\TEST\" echo 書き換え処理を開始します。 for /f %%A in ('dir /b /s %TEST%test.txt') do copy NEW\test.txt "%%A" echo 全ての処理は完了しました。 echo 終了するには何かキーを押してください。 pause > nul ----------------------------------------------------------------- Program Files\TEST\内のtest.txtを検索して、それらすべてをNEW\test.txtで上書きするというBATファイルを作りたいのですが、上記のコードではちゃんと動作しません。 Program Files以外のフォルダを指定すると正しく動作してくれるので、おそらくProgram Filesの半角スペースがエラーの原因だと考えました。 このコードもいろいろなサイトとかを見て、自分なりに考えて作ってみました。 が、どうやったらいいのか考えても全然わからなかったので、どなたか教えていただけたら嬉しいです^^ よろしくお願いします!

  • .batの実行に失敗する

    下記のコマンドを記載した.batファイルを作成し、実行しようとしております --battest.bat for /F "tokens=5 delims=," %i IN (1date_mgm.txt) DO @(if /i "%i"=="2" echo %i >2teteet.txt) --1date_mgm.txtの中身は以下の通りです file_1,20141025,0,0,0 file_2,20141025,2,2,2 これをコマンドプロンプトで実行すると、以下の結果となります。 (1)コマンドプロンプトに直接for文を記載  ⇒2teteet.txtが作成され、結果(2)が表示される (2)battest.batファイルを直接実行  ⇒2teteet.txtが作成されない   (管理者として実行を行っても同一の結果になります) (3)コマンドプロンプトにドラッグして実行  ⇒使い方が誤っていますと表示される。 これを常に2teteet.txtを作成させたい(正常な結果)のですが、 どのようにすればよいのでしょうか

  • batファイル コマンド

    batファイルでSetを使用して変数を代入してそれをechoでテキストファイルに記載させようとしているのですが、なぜか記載できていません。 何故でしょうか?回答よろしくお願いします。 (例) set TEST=SUCCESS echo %TEST% %COMPUTERNAME%>> "%~dp0%\TEST.txt" 作成されたTEST.txtを開くと 「KAISYA_PC」【※PC名】と入力されており変数TESTの値「SUCCESS」が 入っていません。

  • Batファイルについて

    複数階層のフォルダにまたがって格納されているエクセルファイルをBatファイルでコピー、又は、移動させたいのです。コピー、移動させたいファイルのファイル名の頭(顧客IDになっている)を拾ってリストにしてあります。移動させたいエクセルファイルが複数のフォルダに入っているので、最上階層のフォルダでbatファイルを実行できればと思っています。 現在は複数あるフォルダの中に下記のBatファイルと対象リスト.txtをを入れて1フォルダずつ実行していますが、数十個あるフォルダなので作業が大変です。最上階層で出来るようにしたいのです。 FOR /F %%i in (list.txt) do copy %%i "移動先のパス"

  • batファイルでファイルの件数取得

    batファイルでカレントフォルダ内のCSVファイルの件数を取得したく、 以下のbatファイルを作成しましたが、件数が多いと若干のズレがでます。 どこがダメなのでしょうか?ご教授お願いします。 for /f "usebackq" 55i in(`dir /B /S *.csv`) do ( SET /P<NUL=%%i: type %%i | find /c /v "" )

  • 以下のtest.batでtest.txt中のダブルコーテションを削除し

    以下のtest.batでtest.txt中のダブルコーテションを削除したいと考えています。 【test.bat】 @echo off if "%1"=="" goto end set fname=%1 copy %fname% org >nul type nul >%fname% for /f %%a in ( org ) do (set line=%%a&& call :sub) del org goto end :sub set l=%line:"=% echo %l%>>%fname% goto :EOF :end 【test.txt】 "test1",101,1 "test2",201,2 "test3",301,3 dos窓からtest.bat test.txtを実行し、test.txt の内容を確認すると、 test1,101, という結果になります。 なぜ、最後の数字が削除されるのか? 2行目、3行目のデータが無くなるのは? というところがわかりません。 単純にダブルコーテーションを削除するにはどうしたらよいでしょうか? よろしくおねがいします。

  • リネームの為のbatファイル作成

    Bmpファイル名の頭に全てP_がついています。 それを削除するbatファイルを作成しています。 P_****.bmp→****.bmp 下記を作成しましたが、★の部分で詰まっています。 ------- @echo off IF EXIST b.bat del b.bat for %%I in (J_*.bmp) do echo ren %%I ★%%I>>b.bat call b.bat ------- どなたかご教授ください。 よろしくお願いします。

  • forコマンドで属性が隠しファイルを表示するためには?

    forコマンドで属性が隠しファイルを表示するためには? 下記のような、batファイルでファイルをリストアップすると、 属性が隠しファイル、もしくはシステムファイル等がListUp表示されません。 如何なるファイルでもListUp表示できるようにする方法を教えてください。 xyz.bat @echo off for %%i in (*.*) do echo %%i >> test.txt @echo on @echo 完了 pause

  • batファイルの記号

    batファイルでechoコマンドがあると思いますが、 下記の文章のように記号を二つ並べているのはなぜでしょうか? ※>>の部分 echo [%DATE% %TIME%] >> "%~dp0%\test.txt"

  • batファイルの相対パス

    batファイルの相対パス あるバッチが相対パスであるファイルを参照しています このバッチファイルを直接起動すれば、正しく参照できますが、 別のディレクトリにいる別のバッチファイルからcallされた場合、 呼び出し先の相対パスではなく、 呼び出し元の相対パスになってしまいファイルを参照できません。 この問題をスマートに解決する方法はありませんか? 例のchild.batからはfile.txtを参照できますが、 parent_1.bat経由の場合、ファイルが見つかりませんとなります。 child.bat の中で、「cd c:\dir_a」を書いて基点を変更すればとりあえずは行けそうですが、可能な限り絶対パスのベタ書きは避けたいです。 宜しくお願いします。 【例】 c:\ | +-dir_a | | | +-child.bat | | | +-file.txt | +-dir_b | | | +-parent_1.bat | +-dir_c | +-parent_2.bat ===== file.txt ===== test-test-test ===== file.txt ===== ===== child.bat ===== type ./file.txt pause ===== child.bat ===== ===== parent_1.bat ===== call c:\dir_a\child.bat ===== parent_1.bat =====