問題タブ [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 - EnableDelayedExpansion を使用してネストされた変数名
各列の最大長を取得するスクリプトに取り組んでいます。最大長を _c1...n 変数に格納しようとしています。列数不明。
各列の長さを取得し、set _c!i! でそれぞれを格納する変数を作成することができました。= !n!、n は長さですが、特定の列の最大長を設定するには、現在と最大を比較して、!_c!!i!! のようなものを使用する必要があります。これは機能しません。名前のどの部分が別の変数に由来する変数を参照するかについてのアイデアはありますか?
ありがとう...
dos - DOS 連結されたコマンド文字列での展開の遅延
私は DOS の連結コマンドについて他の質問をしましたが、考慮に入れる必要があるすべてのことについて、まだ自信がありません。
誰かが私のシステムで以下のコードと出力を見て、どの構文が間違っているかをアドバイスできるかどうかを確認できますか (注、手動で行を分割しました):
.
コードの一部を切り取って個々の部分を修正しようとしましたが、試行錯誤を試みた結果、何が問題なのかについてあまり考えがつかず、自分でこれを解決するつもりはないことがわかりましたとても早い :(
batch-file - 遅延拡張は遅延拡張内では機能しません
1 行を除けば、私が期待するすべてのことを実行するスクリプトがあります。
以前も同様のことをしましたが、これを機能させることはできません。
私が持っているコードはここにあります
現在の日付を変数 EODNUM に置き換える文字列を除いて、csv ファイルの各行を取得し、それ自体で置き換えることを期待していました (これは実行されます...変数のみが設定される前に展開されるため、は何もありません)...遅延展開はこれを解決するはずですが、このコード行を使用できます
CMDには!が多すぎると思うからです。
何か不足していますか、これをコーディングするより良い方法はありますか?? (私はどんな種類のプログラマーでもなく、私が書くコードのほとんどは試行錯誤と他のスクリプトからの「借用」から来ているので、これを行うには非常に厄介な方法かもしれません)。
windows - setコマンドで何も保存されないのはなぜですか?
後でTOMCAT_VERの値にアクセスしようとしていますが、空の文字列として表示されます。
さらにデバッグするために、設定された場所のすぐ下にechoステートメントを挿入しましたが、機能していないようです。エコーオフを無効にすると、これらの変数が設定されていることを示すステートメントを見ることができますが、それらを印刷できないようです。
cmd - 遅延拡張を使用せずに、エラーレベルのインラインIFテストを実行します
とにかく拡張を遅らせることなく以下を行うことはありますか(1行、読みやすさのために壊れています)?
エコーの場合はcall
使用できることはわかっていますが、で使用できるようには見えませんif
。
windows - cmdと感嘆符
次のコードは、感嘆符を含むフォルダー名では失敗します。ネストされたforループを処理するには、DelayedExpansionを有効にする必要があると思います。この作品を手に入れるためのアイデアはありますか?ありがとう!
batch-file - 遅延変数展開を使用したバッチ ファイル - URL エンコーディング - 等号 - RSA トークン コンバーター
RSA ソフト トークンの変換を自動化し、変換文字列を Outlook に渡しています。Outlook コマンド ラインへのバッチを使用して文字列を URL にすることはできませんが、それは私の問題ではありません。私の問題は、厄介な等号を URL エンコードされた同等の "%3D" に変換することです。
次の行は、等号のエンコードに失敗しています。
私はもう試した:
ただし、等号はエンコードされないままです。
遅延変数展開を使用して等号を URL エンコードする適切な方法は何ですか?
任意の支援をいただければ幸いです。前もって感謝します。
windows - Cmdと感嘆符-パートII
感嘆符を含む特殊文字を含むテキストファイルを解析するときに、文字列置換手順が機能するのはなぜだろうと本当に思っています。遅延変数拡張は、アンパサンド、パーセント記号などの特別な意味をオフにすることを期待していましたが、感嘆符では代わりに失敗します...
コード:
InputFile.txt:
コマンドライン構文:
OutputFile.txt:
編集/補足:
1年半後、このコードスニペットを再度使用する必要がありました。毒文字を処理する2つの追加の例を参照してください。1つ目は一時的に有効化された遅延拡張を再度使用し(Ansgarsの回答を参照)、2つ目はを使用しCALL
ます。どちらも、現在のディレクトリ内およびその下にある空でないファイルのパスと名前を解析しますが、ドライブ文字と現在のディレクトリへのパスを追跡しません。
例1(二重引用符で囲み、必須ではset "File=!File..."
ありecho "!FILE!">>...
ません):
例2(低速、二重引用符を囲む必要があります):
テスト用のファイルとフォルダー:
出力:
バッチ処理をお楽しみください!マーティン
windows - 2 つの同一のコードで、バッチ スクリプトの遅延変数展開による異なる動作
期待される出力:
これが表示された場合、はい 2
これが表示された場合、正常に動作しました
実際の出力:
これが表示された場合、うまくいきました
出力に「If you see this, yes 2」も表示されない理由を誰かが説明できますか?
if-statement - DOS バッチ if ステートメントでの奇妙な動作: 予期されるかバグか?
まったく奇妙なことが起こったので、これが予期された動作なのか、それともバッチ ファイル処理で何らかの奇妙なバグを発見したのか疑問に思っていました。私がやろうとしていることの詳細には触れませんが、以下は、私が話している動作を示すサンプル スクリプトです。
多かれ少なかれ、私が経験しているのは、if ステートメント内から呼び出される関数呼び出し内で設定されたグローバル環境変数が、if ステートメントが終了するまで実際には設定されないということです!
出力は次のとおりです。
1 (1 のはず)
1 (
2 のはず) 2 (2 のはず)
繰り返しになりますが、これは予想される動作ですか (そしてその理由は) ? それとも、ある種のバグに遭遇しましたか?