1

何人かの人に問題を尋ねましたが、解決策が見つからずに 2 回立ち去りました。私は以前にバッチで遊んだことがあまりないので、単純な間違いかもしれません。コードは現在、wmic を使用してプロセスのリストを提供することになっています。最終的には、プロセスを強制終了するように設定したいと思います (これはかなり簡単に実行できるはずです) が、最初にこの障害を乗り越える必要があります。

@echo off
set getprocesslistlocal=wmic process get name,processid
set /P remotemachinecheck=Type the name of the remote machine to view processes of (or type local for local machine), and press Enter.
if %remotemachinecheck%==local
(
%getprocesslistlocal%
) else (
set remotemachine=%remotemachinecheck%
set /P remoteuser=Type the user name to access %remotemachine% with, then press Enter.
set /P remotepassword=[Type the password for %remoteuser% on %remotemachine%, then press Enter. Watch your back, it won't be hidden!
set getprocesslistremote=wmic /node %remotemachine% /user:%remoteuser% /password:%remotepass% process get name,processid
%getprocesslistremote%
)
echo End of list. Press any key to choose process to kill.
@echo off
pause>null
4

1 に答える 1

0

最初に行うことは、エラーの原因となっている行を正確に確認できるように、 をコメント アウト@echo off(または に変更) することです。@echo on


2 番目に確認する必要があるのは、コマンドは、行ではなく、実行される前に置換のために処理されるという事実です

つまり、変数が設定される前にif ( ) else ( )構造体全体に置換が行われます。つまり、変数を使用したいときに、必要なものに設定されません。remotemachine

たとえば、次のコード:

@echo off
set xyzzy=plugh
if a==a (
    set xyzzy=twisty
    echo %xyzzy%
)

あなたが思うかもしれないように出力しませが、代わりにあなたに与えます.twistyplugh

!!遅延展開と展開演算子を調べる必要があります。

@setlocal enableextensions enabledelayedexpansion
@echo off
set xyzzy=plugh
if a==a (
    set xyzzy=twisty
    echo !xyzzy!
)
endlocal

3番目に、これがあなたの差し迫った問題の原因であると思われます.(を行末に移動してくださいif:

if %remotemachinecheck%==local (

次の行に がある(と、次のようなエラーが生成されます。

The syntax of the command is incorrect.

しかし、ここにトリッキーなことがあります:次のトランスクリプト (コンピューターによって生成された行をインデントする) に従って、エラーが前の行にあると思われる可能性がある行の前にそれを出力します。if

c:\pax> type qq1.cmd
    set q=w
    if a==a
    (
        echo yes
    )

c:\pax> qq1

    c>\pax> set q=w
    The syntax of the command is incorrect.

    c:\pax> if a==a

c:\pax> type qq2.cmd
    set q=w
    if a==a (
        echo yes
    )

c:\pax> qq2

    c>\pax> set q=w

    c:\pax> if a==a (echo equal )
    equal
于 2013-05-14T05:14:56.657 に答える