For文を使って、パラメータファイルから値を読み込みたいのですが、
"C:\Documents and Settings\~"等(パスにスペースが含まれる場合)に置かれた場合、
ファイルを読み込んでくれず困っております。
()内のファイル指定で、""(ダブルクォーテーション)
や'(シングルクォーテーション)で囲むこともしてみましたが、ダメでした。。
どう指定すればよいのかご教授下さい。
よろしくお願いいたします。
【パラメータファイル(tmp.txt)】
ABC=12345
【バッチファイル(test.bat)】
for /F "delims== tokens=1,2" %%A in (D:\tmp.txt) do if %%A==ABC set value_1=%%B
echo %value_1%
pause
No.2ベストアンサー
- 回答日時:
空白はファイル名を区切るものとして扱われ、ダブルクォートでくくると
今度はそれがファイル名ではなく文字列として扱われてしまうのでうまくいかないというわけですね。
根本的な解決策ではありませんが、こんなやり方はどうでしょう?
for /F "delims== tokens=1,2 usebackq" %%A in (`type "C:\Documents and Settings\anonuser\hoge.txt"`) do if %%A==ABC set value_1=%%B
usebackq オプションを追加し、別コマンドでファイル内容を出力させて
それを取り込んで使うという寸法です。
とりあえずファイル内容を単純にエコーバックさせるのはうまくいきました。
大変ありがとうございます。
そういった方法があるとは知りませんでした。
別の話になるのですが、
このパラメータファイルの値(ABC=)にシステム環境変数の%SYSTEMROOT%を設定。
ABC=%SYSTEMROOT%
バッチファイルの最後に、以下1行を記述
echo %value_1
とすると出力は、システム環境変数の値ではなく
%SYSTEMROOT%といった文字列が出力されるのですが
それは環境変数の値で出力可能でしょうか?・・・
No.3
- 回答日時:
> %SYSTEMROOT%といった文字列が出力されるのですが
> それは環境変数の値で出力可能でしょうか?・・・
とりあえず、テキストファイルに%VAR%のような行があるとして
(下記の例ではenv.txt)
setlocal ENABLEDELAYEDEXPANSION
for /f %%i in (env.txt) do (
set tmpvar=
for /f "usebackq" %%x in (`echo %%i`) do set tmpvar=%%x
echo !tmpvar!
)
のようにすると、env,txtで指定された環境変数の展開結果が
エコーバックされます。
ポイントは最初の行の endlocal の引数 ENABLEDELAYEDEXPANSION
と、echo !tmpvar! です。
この組み合わせにより、環境変数の遅延評価を行うことができます。
内側の for /f がちょっと美しくありませんが、こうしないと
テキストファイルから取り出した文字列を環境変数として強制的に
評価することができないようですので。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- その他(プログラミング・Web制作) Windowsのバッチファイルについてご教示ください 5 2023/07/25 20:23
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/06 13:01
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストファイルのタブをカン...
-
テキストファイルのファイル名...
-
拡張子を元に戻す
-
バッチファイルからVBAに引数を...
-
多数のサブディレクトリ内のフ...
-
VBAでワークシートを引数として...
-
EXCEl/VBAで拡張子なしのファイ...
-
バッチ処理でファイルの中身を...
-
VBAでエクセルをtxtに変換する...
-
DOSコマンドによるテキストファ...
-
ftpコマンドで複数のファイルを...
-
バッチファイルで文字列削除に...
-
.txtではなく.logの方が良いの...
-
複数のファイルデータを新しく...
-
perl ファイル内文字列抽出
-
accessでSQL文を使ってcsvファ...
-
batファイルについて
-
txtファイルが作成されない
-
vbsにてファイルが存在すればメ...
-
cshでファイルサイズ取得
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
VBAでワークシートを引数として...
-
.txtではなく.logの方が良いの...
-
拡張子を元に戻す
-
多数のサブディレクトリ内のフ...
-
COPYコマンドで結合すると余計...
-
バッチファイル 複数ファイル...
-
テキストファイルで提出とは?
-
バッチファイルで文字列削除に...
-
Windowsのバッチファイルを利用...
-
テキストファイルのファイル名...
-
ファイルの最後に文字列挿入
-
psqlでエラーログをとりたい
-
forfilesで検索したファイルを...
-
バッチファイルからVBAに引数を...
-
accessでSQL文を使ってcsvファ...
-
テキストファイルのタブをカン...
-
MATLABで行列を配列に格納する方法
-
renameコマンドについて
-
【Excel】 VBAを使って毎回名前...
おすすめ情報