• ベストアンサー

バッチでファイルの読み込み

Windowsバッチでファイルの読み込みをしようと思っているのですが、 下記コマンドの実行で「ファイルが見つかりません」となります。 ※パスにスペースを含むのでusebackqを使用しました。 FOR /F "usebackq tokens=1,2 delims= " %%i in ("c:\temp 1\data.txt") DO echo %%i WindowsServer2003でうまくいかなかったのですが、 Xpですれば問題なくファイルを読み込めました。 何か差があるのでしょうか?

  • beo
  • お礼率83% (10/12)

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

  • ベストアンサー
  • K6A
  • ベストアンサー率35% (59/164)
回答No.2

バッチ自体には問題ないように見えますね。 アクセス権の関係ということはないですか? 読み込み権限が無いユーザーで実行した場合もファイルが見つからないと言われるようですが・・・

beo
質問者

お礼

アクセス権というご指摘で問題点がわかりました。 読み込もうとしたファイルが他のプロセスにてロックされていることが原因でした。 typeやmoreで表示できてもforでの読み込みはまた別なんですね。。 また、ファイルが見つかりませんという表示に惑わされました。 ご指摘がないともっと悩んでいたと思います。 本当にありがとうございました。

その他の回答 (1)

  • utakataXEX
  • ベストアンサー率69% (711/1018)
回答No.1

うーん、2003でもOKな気がしますが、「うまくいかなかった」とは、どのようにうまくいかなかったのでしょうか? エラーになったのだとしたら、どのようなエラーでしょうか? スペースを含まないMS-DOSのレガシー表記にしてもダメですかね? "c:\temp 1\data.txt" ↓ "c:\TEMP1~1\data.txt"

beo
質問者

お礼

回答ありがとうございます。 今回の件に直接関係なかったのですが 表記のしかたの勉強になりました。

関連するQ&A

  • MS-DOSバッチファイルで

    度々ご教授お願い致します。 以下のようなMS-DOSバッチファイルで、xcopy コピー元 コピー先のようにしたいのですがこれではうまくいきません。 どのようにしたら良いでしょうか。宜しくお願い致します。 FOR /F "eol=; tokens=1,2 delims=, " %%i in (c:\a.txt) do (@echo %%i %%j) xcopy %%i %%j /s /o /y >> (@echo %%i %%j)

  • バッチファイルでテキストファイル読込

    バッチファイルにてテキストファイルを一行読込みたいのですが、 「,」までの位置しか取得できません。 現状の該当箇所のコマンドと読込むテキストは以下になります。 [実行するコマンド] For /F "delims=" %%i in (read.txt) Do Call :Sub %%i :Sub set DATA=%1 echo %DATA% [読込むテキスト read.txt] "111","222","333","444" "111","222","333","444" [結果] "111" 結果の通り、カンマまでしか取得できていない状態です。 どなたかご教授の方、よろしくお願い致します。

  • For文のtokensにおけるバッチファイル作成について

    はじめまして。 バッチファイルにて以下のコマンドを作成して 実行したのですがきちんと実行されません。 コマンドプロンプトを起動して1個1個実行するときちんと 実行されます。どういうことなのでしょうか? <バッチファイル> @echo off cd /d デスクトップ for /F "tokens=2" %i in ( file.txt ) do echo %i >> result.txt pause <file.txtの中身> 1<tab>2<tab>3 4<tab>5<tab>6

  • バッチファイル テキスト読込

    バッチファイルの中で、テキストを読み込んで、その中から 10文字分抽出する処理を行いたいのですが、テキストを変数に格納できません。 ヘルプ・ネットも見たのですが、やりかたが悪いのかできてない状況です。 何が悪いのかご教授お願いします。。 ↓ソース set testFile=test.txt For /F "delims=" %%i in (%testFile%) Do ( set readTxt=%%i set str=%readTxt:~10,10% echo %readTxt% echo %str% )

  • WindowsバッチのCSV読み込みについて

    WindowsバッチにてCSVファイルのデーターの読み込みを行いたいと考えています。 CSVの中身(test.csv)------------------------------------- "CN=test1,CN=users,DC=testdomain,DC=local","test1","aaa" "CN=test2,CN=users,DC=testdomain,DC=local","test2","bbb" 上記の取り込み方として、以下のバッチを実行しようとした場合、求めている結果になりません。 for /f "delims=, usebackq tokens=1-3 usebackq" %%i in ("test.csv") do echo %%i, %%k ○求める結果 "CN=test1,CN=users,DC=testdomain,DC=local","aaa" "CN=test2,CN=users,DC=testdomain,DC=local","bbb" ○得られた結果 "CN=test1,CN=users,DC=testdomain "CN=test2,CN=users,DC=testdomain ""(ダブルコーテーション)で括ったものを、ひとつのカラムとして受け渡したすことはできないでしょうか。よろしくお願い致します。

  • バッチファイルでの計算方法

    一行のみのtxtファイル(1111.txt)に日付 スペース 時間 スペース 値 が格納されています。 バッチファイルにて上記値に定数(6666)をかけ単位を追加して出力(2222.txt)したいとおもいます。 以下のように書いてみましたが どこが悪いかよくわかりません。 どなたかお教えいただきたいと思います @ECHO OFF FOR /F "eol=# tokens=1,2,3" %%a in (1111.txt) SET /A x=6666 SET y=%%c*%x% DO ECHO %%a %%b %%y >2222.txt

  • バッチファイルで2行にわたるコマンドを入力したいのですが

    バッチファイルで複数行にわたるコマンドを打ちたいのですが、方法がわからなくて困っています。 for /f "tokens=1,2,3 delims=/ " %%a in ('date /t') do ( set hinichi=%%a%%b ) "C:\Program Files\Lhaca\Lhaca.exe" "test%hinichi%01.txt" "test%hinichi%02.txt" ・・・・・・・ と31個のファイルを圧縮するバッチです。 体裁の問題ですが、 for /f "tokens=1,2,3 delims=/ " %%a in ('date /t') do ( set hinichi=%%a%%b ) "C:\Program Files\Lhaca\Lhaca.exe" ? "test%hinichi%01.txt" ? "test%hinichi%02.txt" ・・・ としたいのですが各行のつなぎの記号?がわかりません。 ご存知の方、よろしくお願いいたします。

  • バッチで118項目のCSVを処理したいですが。。。

    バッチファイルで一行に、118項目のあるCSVファイルを読み込んで、必要な項目を抽出して、新しいCSVを作りたいです。 いろいろ調べたら for /f "delims=, tokens=1-3" %%I in (sample.csv) do ( echo %%I %%J %%K>> new.csv ) で実現できると思っていましたが、tokensに値の制限があって、tokens=1-118にすると、うまくいかないです。 どなたかいい方法をご存知でしたら、教えていただきたいですが。

  • バッチファイルで条件によって書き出さないようにしたい

    temp.txtというファイルのカンマ4つめが同じだったらテキストに出力しないバッチファイルを作りたいと思っています。 set sbuf=test for /f "tokens=4 delims=, " %%a in (C:temp.txt) do ( set saddress=%%a if %sbuf% == %%a ( ) else ( set saddress=%%a findstr %saddress% C:\sip_cmail\ping_sip.txt >> C:\out.txt ) set sbuf=%%a ) と書いてみたのですが、動きません。 流れとしては、一巡目に通ったときの値をbufにいれておいて、二順目通ったときに比べ、同じだったら何もしないで次に行く、としたいのですが、、 括弧が何十にもなると出来ないのでしょうか。 よろしくお願い致します。

  • Windows2000 バッチファイルコマンドについて

    こんにちは。 バッチファイルコマンド(DOSコマンド?)について質問があります。 まずやりたい事としては、 「前月日付のフォルダを自動作成したい」 です。 当月日付をもってくる為には以下の様なコマンドでできました。 for /f "tokens=1-2" %%l in ('date /t') do set today=%%l for /f "delims=/ tokens=1-2" %%a in ('echo %today%') do set yymm=%%a%%b このコマンドを実行すると、例えば、%yymm%には200507が入っています。 このコマンドを応用して、前月日付(200506)を取得したいのですが、何か言い方法はありませんでしょうか? また、新たなやり方あるのでしたら教えて頂けないでしょうか?

専門家に質問してみよう