2013-03-23 2 views
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 파일입니다 :

code output

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

과 도움이 경우

가 여기에 출력의 스크린 샷입니다

참고 : 내 코드는 t를 제외하고 정확히 동일 할 때 잘 동작했습니다. 그냥 그 foldernames을 일 처리 나 있다면 그는 Files\DayZ Admin Panel\

을 foldernames,이 공간을 포함하고 있기 때문에

답변

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" 
+0

오른쪽 ... 나는 바보를하지 않는거야? 내가 그걸 잊어 버렸다고 믿을 수가 없어. – Yorrick

2

당신은 경로에 공백이있을 때마다 따옴표를 사용해야합니다 : "%desktopdir%\DayZ Admin Panel\Files\DaRT"

+0

아 ... 맞아 ... 지금 내 dunce-hat을 놓을거야 ... – Yorrick

+0

은 최고의 가정에서도 발생한다 :-) –

+0

난 그냥 "12시 30 분이고 나는 어젯밤 3 시간 만 잤다."변명 : – Yorrick

-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 

출력 : enter image description here

그리고 올바른 일 s'd 될 :

@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 
+0

아니요, vbscript는 잘 작동하지만 사용자의 데스크톱 즉 C : \ Users \에 대한 전체 경로를 가져옵니다. Name \ Desktop을 사용하면 해당 경로가 C : \ Gebruikers \ Name \ Bureaublad (NL 버전) 등으로 변경되거나 일부 사용자의 D : \ 또는 E : \ 드라이브에 Windows가있을 수 있습니다. 그게 내 경우에는 VBScript가 무엇입니까. – Yorrick

+0

코드를 편집했는지 모르겠다. 테스트 2와 비슷하지만 '% USERPROFILE % \ Desktop'을 사용하여 VBS없이 데스크톱 경로를 얻을 수있다 .-) –

+0

내가 말했듯이, 비영어권 Windows 버전의 경우 "데스크톱"은 네덜란드어로 "Bureablad"또는 스웨덴어로 "Skrivbord"(실제 이름이 맞는지는 확실하지 않지만 요점은 알 수 있음) – Yorrick

관련 문제