問題タブ [delayedvariableexpansion]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
batch-file - スクリプト作成 - 遅延拡張 - for ループの外側
For ループの外で変数を使用しようとしています。ループ内のエコーは、期待どおりの結果をもたらします。ループの外側で変数をエコーすると機能しません。以下はスクリプトです-
batch-file - %1 を使用した 2 つの for ループ - 展開の遅延?
私の作業用バッチ ファイルは、リモート サーバーの長いリストをスキャンし、そこにあるものをすべてローカル サーバーにコピーし、ログ ファイルでキーワードをチェックし、キーワードが見つかった場合は電子メールを送信します。ログファイルが空の場合でも、常にメールを送信していることに気付きました。
FOR
両方のループが%1
出力に変数を使用していることを発見しましECHO %1
た:servermove
。より良い説明がない%1
ため、ループ間で null にリセットされません。
SETLOCAL ENABLEDELAYEDEXPANSION
私はほぼ十数の SO 投稿を確認しましたが、これを使用するとこれが解決すると確信しています。それが私の理解の終わりであり、これまでのところ私は成功していません。
関連するコードは次のとおりです。
:mailtest
両方のインスタンスで使用するように変更しようとしまし%%B
たが、それも失敗します。どちらか一方のループの前にSETLOCAL ENABLEDELAYEDEXPANSION
とその対応物を配置し、 toを変更しても機能しません。ENDLOCAL
%%A
!A!
誰かが私のやり方の誤りを親切に指摘し、これを解決するのに役立つ提案やリソースを提供してくれませんか?
windows - Windows バッチ: 変数内の変数を持つブロックの場合
変数 Variable を作成したい。つまり、 Var 1、 Var 2、 Var 3、 Var 4などの変数名を持つ多くの変数を作成したいということです。これは機能しますが (以下を参照)、-Loop内での単一処理のために使用する必要があり、正しく解釈されなかったため、 ing は機能しませんでした。ECHO
EnableDelayedExpansion
FOR
!var%num%!
だからここに私が持っているものがあります:
数時間後、これCALL
は echo の前で -Routineを使用して機能するようになりました
皆さんへの私の質問は、今どのように作るかです
少しいい。初めてみた
しかし、これは単一のFOR
ループにあるため失敗します。これをより良くする機会はありますCALLING
か?
事前にありがとうパトリック
windows - 変数が期待どおりに動作しない
私はこのバッチ ファイルの構文を正しくしようと格闘してきましたが、一部が機能しない理由がわかりません。
- 変数
i
は、実行するたびにインクリメントされません。 - 連結 onは連結して
strc
いないようです。
これが私のコードです:
batch-file - 遅延変数展開を引数として渡すバッチ ファイル
別の変数の名前を含むバッチ変数があります。変数に対して a を実行するCALL ECHO
と、期待どおりの出力が得られます。ただし、CALL ECHO
コマンドの出力を引数として別のコマンドにパイプしようとすると、問題が発生します。これは私が試みているものです:
引数を使用して直接呼び出されたかのように、遅延変数展開を使用して myCmd を呼び出す方法を知っている人はいますか?
これを実行しようとしている理由は、myCmd を複数回呼び出す必要があるためです。変更されるのは文字列 "Bar" だけです。これは、3 つの変数 (myCmdPre、myInnerVar、および myCmdPost) を使用して、変数の展開を遅らせることなく実行できることを知っています。%myCmdPre%%myInnerVar%%myCmdPost%
ただし、 myCmd を実行するたびに入力する必要なく、目標を達成する別の (より簡潔な) 方法が必要なようです。
編集
明確にするために、myCmd.bat という同じディレクトリに次の内容の 2 つ目のバッチ ファイルを作成しました。
サンプル バッチ ファイルを実行すると、次のような出力が生成されます。
myCmd には何もパイプされていないかのようです。
batch-file - if ループ内で変数を割り当てる: Windows Bat スクリプト
私はバットスクリプトを書こうとしていて、次の問題に直面しました。
以下は、問題が処理されるスニペットです。
このバット スクリプトの出力は次のとおりです。
fileName のエコーに値2gen
があることを期待していますが、まだ印刷中ですnil
私の最初の試みでは、setlocal enabledelayedexpansion enableextensions
and を使用しませんでした!fileName!
(代わりに を使用しました%fileName%
)
ソリューションを検索した後、遅延拡張が有効になりました。しかし、正確な間違いが何であるかはまだわかりません。
また、使用しているOSのバージョンはWindows 7 64 bit
間違いを指摘するのを手伝ってください。
ありがとう!
variables - Batch: カウントループで使える変数定義
私のバッチでは、可変量のソースをターゲット宛先にコピーしたいと考えています。
私は次のように定義したい:
定義された量のフォルダーに依存
ループ内のフォルダーを調べたい:
見せたら
source1、source2など、期待どおりの結果が得られますが、
提供するだけ
ソース1
期待値の代わりに
「C:\フォルダ1」
DelayedExpansion を使用してこれを解決できると思いましたが、何が欠けていましたか?
batch-file - 引数プラス1を処理する引数を取得するバッチスクリプト
現在の引数と比較する次の引数を取得できるようにしたい。したがって、argVec が「--define」に等しい場合、次の引数をエコーしたいのです。「配達」ではなく「y」という結果が得られます。
私の入力は次のとおりです。Cmd version version1 --define delivery
windows - 感嘆符 (!) が CMD %CD% 出力から削除されました
Windows CMD シェルは!
、ディレクトリ名から " " 文字を取り除いています。
現在の作業ディレクトリが " C:\\!MyFolder
"であると仮定します
.CMD ファイル内では、次の構文を使用します。
C:\MyFolder
バンバン(!
)なしで表示されます
これは WinXP から Win8.1 まで共通です。
Q: これに対する回避策を知っている人はいますか?