0

.batファイルに書き込んだこのコードは完全に機能しましたが、突然...機能しなくなりました。いくつかのフォルダー名を変更する以外に何が起こったのかわかりません。

これが私のコードです:

@echo off  
start /w Files\MySQL\mysql-connector-net-6.6.5.msi  
echo MySQL Connector/NET 6.6.5 has been installed.  
FOR /F "usebackq delims=" %%i in (`cscript desktop.vbs`) DO SET DESKTOPDIR=%%i  
copy Files\DayZAdminApp.exe %DESKTOPDIR%\DayZ Admin Panel  
echo.  
echo DayZ Admin Panel has been placed onto your desktop.  
echo D | xcopy Files\DaRT %desktopdir%\DayZ Admin Panel\Files\DaRT /E /Q  
ping 127.0.0.1 -n 2 -w 1000 >nul: 2>nul:  
echo.  
echo DayZ Admin rCon Tool (DaRT) has been copied.  
echo.  
copy Files\loadout.exe %DESKTOPDIR%\DayZ Admin Panel\Files  
echo Loadout editor has been copied.  
echo.  
echo.  
echo Make sure you keep the folder intact, any missing files will limit the panel's capabilities.  
echo.  
pause

そして、これがdesktop.vbsファイルです:

set WshShell = WScript.CreateObject("WScript.Shell")  
strDesktop = WshShell.SpecialFolders("Desktop")  
wscript.echo(strDesktop)`

それが役立つ場合に備えて、出力のスクリーンショットを次に示します。

コード出力

Files\注:フォルダー名とフォルダー名を除いてまったく同じである場合、私のコードは問題なく機能しましたDayZ Admin Panel\

それらのフォルダ名をいじくりまわしているだけの場合は、これがきれいに見えるので、私が間違ったことを教えてください

4

3 に答える 3

2

"スペースが含まれているため、パスの周りを使用する必要があります

copy Files\DayZAdminApp.exe "%DESKTOPDIR%\DayZ Admin Panel"
...
echo D | xcopy Files\DaRT "%desktopdir%\DayZ Admin Panel\Files\DaRT" /E /Q
...
copy Files\loadout.exe "%DESKTOPDIR%\DayZ Admin Panel\Files"
于 2013-03-23T23:15:21.790 に答える
2

パスにスペースがある場合は常に引用符を使用する必要があります。"%desktopdir%\DayZ Admin Panel\Files\DaRT"

于 2013-03-23T23:15:48.953 に答える
-1

この場合、VBScript の支援は必要ありませんが、実行可能ファイルの出力をバッチ変数にリダイレクトする際に問題があるようです。そのため、同様のタスクに役立つことを願ってコードを作成しました。

@Echo OFF

Echo --- Test 1 ---
FOR /F "usebackq delims=" %%i IN (cscript desktop.vbs) DO (
   SET DESKTOPDIR=%%i
)
Echo %DESKTOPDIR%

Echo --- Test 2 ---
FOR /F "usebackq delims=" %%i IN (%windir%\system32\cscript.exe desktop.vbs) DO (
   SET DESKTOPDIR=%%i
)
Echo %DESKTOPDIR%

Pause

出力: ここに画像の説明を入力

1つを修正すると、次のようになります。

@ECHO OFF

Echo --- Test 1 ---
FOR /F "tokens=*" %%i IN ('cscript.exe desktop.vbs') DO (
   SET DESKTOPDIR=%%i
)
ECHO Desktop: %DESKTOPDIR%

REM or...

Echo --- Test 2 ---
FOR /F "usebackq delims=" %%i IN (`cscript.exe desktop.vbs`) DO (
   SET DESKTOPDIR=%%i
)
Echo Desktop: %DESKTOPDIR%

Pause
于 2013-03-24T00:11:43.483 に答える