取引Windowsバッチのスクリプト
-
22-08-2019 - |
質問
Windowsバッチファイルのときは、以下の
set myvar="c:\my music & videos"
変数 myvar
格納され、引用符を含む。正直に見るものか.引用符をうかが始まる文字列と、保存されるわけではありませんの一環としての価値そのものです。
ってしまいますから起こっているか?
感謝。
解決
set "myvar=c:\my music & videos"
引用符はMYVAR前に開始注意してください。それは実際に簡単です。 サイドノート:それは引用符に包まれていますしない限り、&コマンドの区切りとして読み込まれますので、MYVARが、その後エコーすることはできませんが、それはまだパスとして動作します。
http://ss64.com/nt/set.html の下の「変数名ことができます
"スペースを含みます他のヒント
このはそれを行うための正しい方法はあります:
set "myvar=c:\my music & videos"
引用符は、変数の値には含まれません。
く利用したい変数です。また利用した変数の値のない引用符のどちらでもご使用いただけ遅れ拡大と文字列の置換、または for
コマンド:
@echo OFF
SETLOCAL enabledelayedexpansion
set myvar="C:\my music & videos"
としてandynormancxの見積書が必要以降の文字列を含む &
.またはエスケープできますが、 ^
, ると思い引用符を少しクリーナーです。
ご利用の場合は遅い拡大文字列置換、変数の値の見積:
@echo !myvar:"=!
>>> C:\my music & videos
にお使いいただけます for
コマンド:
for /f "tokens=* delims=" %%P in (%myvar%) do (
@echo %%P
)
>>> C:\my music & videos
しかし、使用する場合は、変数コマンドにより、すきまが大きくな価値または同封して変数の値引用符で囲む:
使用文字列置換の遅延を拡大する利用価値の変動な引用符で囲で可変できるコマンド:
@echo OFF SETLOCAL enabledelayedexpansion set myvar="C:\my music & videos" md %myvar% @echo !myvar:"=! created.
を使用
for
コマンドを使用した変数の値な引用ができないサラウンドを変数と引用符で使用する場合はコマンド:@echo OFF set myvar="C:\my music & videos" for /f "tokens=* delims=" %%P in (%myvar%) do ( md "%%P" @echo %%P created. )
長い話を短くすれば、全くありません清潔な使い方をpathやファイル名を格納する組み込みの空間および/または &
sバッチファイルです。
利用jscript.
多くの衛星は前(すなわち約8年間に渡)また、大きなC++/VB6プロジェクト、また様々なビットのバッチスクリプトなの。
誰かがってきたいということで、そのた ジョエル試験, また、特にenamouredのポイント2に設定約全体を視野に入れたん構築のスクリプトを一つのシングルを構築す。..
でほぼ壊れた心は、すべて少しスクリプトとは、異なる機械、わずかに異なるセットアップ、ye神で恐ろしい、特に設定変数やパラメータを生み出していきます。で脆く、わずかなこともで必要と30分の調整を行く。
最終的にこれは、頑固ない- Iチャッキング全体の多くには、 約日 再書きでJavaScript, 走行からのコマンドプロンプトとCScript.
ことなんかないね。これらの日でMSBuild、クルーズコントロールすれば必要なのは何か少しでも手掛けてバッチスクリプトを使っていjscript.
Windowsのコマンドインタプリタで利用できる、引用符のセットコマンド(有効な全てのバージョンのwindows NT NT4.0Windows2012R2)
スクリプトと同じように以下のように書きます:
@echo OFF
set "myvar=C:\my music & videos"
それが引用符を変数として必要です。
のCMD迅速かつながるという難解なのですが、コマンドインタプリタを実際に動作しかも堅調に従う形での内部ロジックする必要がありますが、すぐに思い切っています。
この設定コマンドを必要とせずご利用頂ける利用見積書が両方を行っているた変数代入の方法の方法を使用していないので引用する原因となりますので余裕の空間変数にあっては通知がディバッグを記述します。
例えば両方とも下記の技術的に有効とができる後続スペースでは実践
set myvar=some text
set myvar="some text"
例えば両方とも下記の良い方法の設定変数のWindowsのコマンドインタプリタが、ダブルクォート法の優位性:
set "myvar=Some text"
(set myvar=Some value)
両方のこれらの中に残さないように解釈の変数のデータを探しています。
強力なテキスト ただし、お客様の目的にのみ引用方法まで有効でご利用の予約文字
このように、ときに使う:
set myvar="c:\my music & videos"
しかし、ものの変数が正しくセットをこの文字列は、エコーのスティングのコマンドは通訳を解釈するアンパサンドとしてのキーワードを示すことも決ます。
したいときにエコー文字列から変数のセントロイド分分子動力学通訳が必要ということでテキスト文字列、たくない場合は、引用符を示す次のいずれかの操作を行います:
エコーの変数を引用:
Echo."%myvar%"
エコーの変数なく引用:
Echo.%myvar:&=^&%
<nul SET /P="%myvar%"
上記の二つのシナリオでのエコー文字列がない引用符です。出力例を下記に
C:\Admin> Echo.%myvar:&=^&%
C:\my music & videos
C:\Admin> <nul SET /P="%myvar%"
C:\my music & videos
C:\Admin>
エスケープ文字 '^'、例えばを使用してみてください。
set myvar=c:\my music ^& videos
シェルが&リテラルとして扱われない場合がありますので、あなたがMYVARを展開するとあなたは注意する必要があります。上記が動作しない場合は、あまりにも文字列にキャレットを挿入しようとします:
set myvar=c:\my music ^^^& videos
す 必要 ての引用の場合はテキストでの設定を含む特定の文字を含む &.場合はテキストなど & その後は必要ないます。
たとえば、テキストだった"c:\my 音楽の"そしてなにができる:
set myvar = c:\my music
でのテキストには、 & が必要になります。
編集:
またはDaveは彼の答えできから逃れる問題を持つ文字 ^^^, だが、注意するアプローチとして & できないのではないで文字が必要。実際の方がはるかに容易にこだわる、引用符ではなく逃がすべての問題。