
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
そのままの構文でも、変数のデータが以下の様な感じなら不具合は起きないはずです。
@echo off
set DATA=xxx
set OUTPUT_FILE=OUTPUT_FILE.txt
echo %DATA%>%OUTPUT_FILE%
不具合が起きる原因として考えられるのは、
パスや変数に、特殊な意味を持つ半角記号が含まれる場合です。
「"」「<」「>」「&」「|」「%」と、半角スペースです。
これらは、エスケープをし、文字として認識させる必要があります。
「%」以外の半角記号は、
「^」を使ってエスケープします。
「%」は「%」を使ってエスケープします。
つまり、「%%」と書きます。
コマンドプロンプトで直接打っている場合は、必要ないかも知れません。
例えば、上記の構文を使って、
「&」という文字をファイル出力したいとします。
「set DATA=&」としてしまうと、
「&」は特殊な意味がある記号ですから、うまくセットされません。
「&」をエスケープする為に、「^」を付けて、
「set DATA=^&」とすると、
「DATA」に「&」がセットされた状態にはなりますが、
ファイル出力はうまくいきません。
「echo &>%OUTPUT_FILE%」という状態になっているからです。
うまく「&」をファイル出力するには、
「echo ^&>%OUTPUT_FILE%」という状態にしなくてはいけません。
ですので、変数「DATA」をセットする段階で、
「^」を「^^」とエスケープし、
「&」を「^&」とエスケープし、
「set DATA=^^^&」とすると、
「DATA」に「^&」がセットされた状態になり、
「echo ^&>%OUTPUT_FILE%」となり、
これでやっと「&」がファイル出力されます。
エスケープが面倒な場合は、「"」で囲むと、その間にある半角記号は基本的に文字として認識されますが、「%」と「"」が入っている場合はうまくいきませんので注意が必要です。
「&」を「"」で囲む例は以下の通りです。
set DATA="&"
echo %DATA%>%OUTPUT_FILE%
ただ、これだと、最初と最後に「"」が付いた状態で出力されます。
あと、パスに関しては、
個人的には、全て「"」で囲んだ方が無難だと思います。
変数に入れるパスは、
「"」無しの方が、後々扱いやすいかと思います。
えっと、そのままでは不具合が起きるので質問をしました。
この後いろいろ調べてみましたが、バッチファイルではやりたいことをやるのが難しいことがわかりました
他の方法を考えてみようと思います
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
バッチ処理でファイルの中身を変数に入れるやり方
その他(プログラミング・Web制作)
-
バッチでテキストファイルから任意の行のみ取得したい
その他(プログラミング・Web制作)
-
batである文字列内に特定の文字列が含まれているか確認したい
その他(プログラミング・Web制作)
-
-
4
コマンドプロンプトの「%1」と「%~1」の違いがわからない
その他(プログラミング・Web制作)
-
5
バッチコマンドの「set」で入力した内容をファイルに出力する場合の問題点
Windows Vista・XP
-
6
コマンドプロンプトによるフォルダ内のファイル存在有無
UNIX・Linux
-
7
バッチファイル 文字列にスペースがある場合
その他(プログラミング・Web制作)
-
8
コマンドプロンプトのエラーについて
その他(パソコン・周辺機器)
-
9
Dosブロンプトでtabを出力したい
その他(プログラミング・Web制作)
-
10
バッチファイル 指定行の切り出し
その他(Microsoft Office)
-
11
ファイルの先頭行を全て削除したい
Windows Vista・XP
-
12
Windowsのバッチファイルを利用しtxtファイルの指定のした位置に文字を追加する方法
その他(プログラミング・Web制作)
-
13
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
14
echoの出力の最後のスペースを除去したい
iOS
-
15
Windowsのバッチファイルで正規表現の置換方法について…
Windows 10
-
16
ファイルの最後に文字列挿入
その他(プログラミング・Web制作)
-
17
DOSコマンドのforで空白行をスキップしない
UNIX・Linux
-
18
コマンドプロンプト標準出力とファイル出力両方
その他(プログラミング・Web制作)
-
19
コマンドプロンプトでのBATファイルで、定数文字列の記述方法
Windows Vista・XP
-
20
テキストファイルの最終行を削除したいのですが
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
onedriveの中身を削除したらパ...
-
教えてください!困ってます。
-
UNIXマシンよりwindows...
-
Winmerge ファイルの中身は同じ...
-
mrl→midファイルへ
-
ゴミ箱に間違って入れて空にし...
-
office365 ファイルを削除したい
-
ファイルの先頭行を全て削除したい
-
mac ファイルの詳細情報を編集...
-
Office2000のインスト-ル時のエクセ...
-
メールに1枚画像ファイルを送...
-
プロセスが使用している資源の...
-
フォルダ内の一覧を印刷するには?
-
ファイルの単位
-
ODBCエラー「admin」によってロ...
-
mac 表示できなくなりました。
-
.LCK という見えないファイル
-
Mac - WinXP 間でOutlook Expre...
-
Excelで保存時間とPCの時間があ...
-
同期センターのマークが出てま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Winmerge ファイルの中身は同じ...
-
教えてください!困ってます。
-
onedriveの中身を削除したらパ...
-
emlをtxtに変換するには?
-
コマンドプロンプトによるフォ...
-
ファイルの先頭行を全て削除したい
-
同期センターのマークが出てま...
-
バッチファイルで変数の中身を...
-
Windows10 フォルダ内の自動並...
-
office365 ファイルを削除したい
-
mrl→midファイルへ
-
外字ファイル、eudc.tte と e...
-
ファイルの単位
-
Excellにて→ファイルエラー:デ...
-
macのdmgファイル(動画)をMP4...
-
VScodeでjarファイルを開く方法
-
ショートカットアイコンと、元...
-
BAKファイルを非表示にする方法
-
mac ファイルの詳細情報を編集...
-
クラリスワークスのファイルを...
おすすめ情報