8

ラップトップをwifiに変えて、毎回cmdで行を入力しやすくするためのバッチを作成しています。

問題は、wifi 名が常にkey= insted に設定されることです。

これが私がしたことです:

@echo OFF
set /p option="Enter 1 to create wifi, Enter 2 to stop wifi "
IF %option% EQU 1 (
    set /p id="Enter wifi Name:"
    set /p key="Set password:"
    netsh wlan set hostednetwork mode=allow ssid = %id% key = %key%
    netsh wlan start hostednetwork
)

IF %option% EQU 2 (
netsh wlan set hostednetwork mode=disallow
)

timeout /t 5
4

5 に答える 5

13

スイッチと等号、または等号とパラメーターの間にスペースを入れてはいけませんが、本当の原因は、ステートメントSET /P内で使用しているためです。IF

これを修正するには、次の 2 つのことを行う必要があります。

  1. ステートメントSetlocal EnableDelayedExpansionの後にバッチ ファイルの先頭に追加します (実行時にブロック内の変数を展開できるようにするため)。@ECHO OFFIF

  2. を使用しているので、次のように の代わりに をEnableDelayedExpansion使用してすべての変数を呼び出します。!!%%

    netsh wlan set hostednetwork mode=allow ssid=!id! key=!key!

于 2013-07-11T19:13:14.067 に答える
3

解決策を得た

@echo off

echo What You What To Do ?
echo 1 to create wifi
echo 2 to stop wifi

set /p input=
if %input%==1 goto 1
if %input%==2 goto 2

:1
cls
set /p name=Enter wifi name 
set /p pass=Enter wifi password 
echo Creating wifi with
echo Name = %name% 
echo Password = %pass%
netsh wlan set hostednetwork mode=allow ssid="%name%" key="%pass%"
netsh wlan start hostednetwork
timeout /t 5
exit;

:2
cls
netsh wlan set hostednetwork mode=disallow
exit;
timeout /t 5
于 2013-07-11T19:50:25.047 に答える
1
@echo off
setlocal enabledelayedexpansion

SET /P myvar="Enter variables: "

set argCount=0
for %%x in (%myvar%) do (
   set /A argCount+=1
   set "argVec[!argCount!]=%%~x"
)

echo Number of processed arguments: %argCount%

for /L %%i in (1,1,%argCount%) do (
    echo %%i- "!argVec[%%i]!"
)

関数を呼び出した結果は次のようになります。

function.bat
Enter variables: a b c
1- "a"
2- "b"
3- "c"

このようにして、パラメーターを指定して関数を呼び出し、関数の別の部分でパラメーターを使用し、SET からの新しい入力を使用して反復することができます。

于 2017-04-27T15:36:07.513 に答える
0

これを行う別の方法を次に示します。問題になる可能性があるため、ssid= と key= の周りのスペースも削除しました。

@echo OFF
set "option="
set /p "option=Enter a name to create wifi, or just press Enter to stop wifi: "

IF not defined option (
netsh wlan set hostednetwork mode=disallow
goto :EOF
)

    set /p key="Set password:"
    netsh wlan set hostednetwork mode=allow ssid=%option% key=%key%
    netsh wlan start hostednetwork

timeout /t 5
于 2013-07-12T20:22:06.447 に答える
-1

あなたの問題が何であるかわからない、あなたのコードのこの簡略化されたバージョンは私にとっては問題なく動作します:

@echo OFF
set /p option="Enter 1 to create wifi, Enter 2 to stop wifi "
IF %option% EQU 1 (
    echo Option 1
)

IF %option% EQU 2 (
    echo Option 2
)

timeout /t 5

これは私の出力です。バッチ ファイルの名前は「z.bat」です。

C:\z>z
Enter 1 to create wifi, Enter 2 to stop wifi 1
Option 1

Waiting for 2 seconds, press a key to continue ...

C:\z>z
Enter 1 to create wifi, Enter 2 to stop wifi 2
Option 2

Waiting for 4 seconds, press a key to continue ...

C:\z>
C:\z>cmd /version
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.
于 2013-07-11T19:50:42.873 に答える