답변:
이 경우 작은 따옴표는 사용하지 않습니다. 각 경로 주위에 따옴표를 추가하고 전체 명령을 따옴표로 묶어야합니다.
cmd /C ""C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*""
cmd /C
CEEMEA & LATAM.doc
. 어떻게해야합니까? "C:\Program Files\WinRAR\rar" a -agmmddyy -x*CEEMEA & LATAM.doc ".rar"
경로에 공백 문자를 사용하는 경우 (예 xyz
: 위치가 앱 인 앱에 액세스 해야하는 경우)를 알아 냈습니다 .
C:\Program Files\ab cd\xyz.exe
Windows cmd 프롬프트에서 이것을 실행하려면
C:\"Program Files"\"ab cd"\xyz.exe
또는
"C:\Program Files\ab cd\xyz.exe"
큰 따옴표로 문제가 해결되지 않으면 예를 들어보십시오.
dir /X ~1 c:\
대체 파일 또는 디렉토리 이름 목록을 가져옵니다. 출력 예 :
11/09/2014 12:54 AM 8,065 DEFAUL~1.XML Default Desktop Policy.xml
06/12/2014 03:49 PM <DIR> PROGRA~1 Program Files
10/12/2014 12:46 AM <DIR> PROGRA~2 Program Files (x86)
이제 명령에서 5 번째 열에 짧은 8 자 파일 또는 폴더 이름 (예 : PROGRA ~ 1 또는 DEFAUL ~ 1.XML)을 사용하십시오. 예를 들어 :
set JAVA_HOME=c:\PROGRA~1\Java\jdk1.6.0_45
공백이 포함 된 경로를 큰 따옴표로 묶으십시오.
cmd /C "C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*"
Rar.exe
실제로 인수 구문이 무엇인지에 있습니다 . 잘못 사용했을 수 있습니다. 어쩌면 시도 "D:\Hello 2\"
하거나 "D:\Hello 2"
대신 "D:\Hello 2\*.*"
?
CEEMEA & LATAM.doc
. 무엇이되어야합니까? "C:\Program Files\WinRAR\rar" a -x*CEEMEA & LATAM.doc ".rar"
큰 따옴표로 복잡한 경로 이름을 제공하고 파일 끝에 파일 확장자를 포함 시키십시오.
파일의 경우 :
call "C:\example file.exe"
디렉토리의 경우 :
cd "C:\Users\User Name\New Folder"
CMD는 큰 따옴표 ( "xyz")가있는 텍스트를 하나의 문자열로 해석하고 작은 따옴표 ( 'xyz') 내의 텍스트를 명령으로 해석합니다. 예를 들면 다음과 같습니다.
( 'dir / b / s * .txt')의 FOR %% A는 ( 'command')
( 'dir / b / s * .txt')에서 FOR %% A 수행 ( "%% A"에코)
한 가지 좋은 점은 cmd는 bash와 같이 대소 문자를 구분하지 않습니다. "New fiLE.txt"와 "new file.TXT"는 비슷합니다.
* 참고 : 위의 경우 %% A 변수는 대소 문자를 구분합니다 (%% A는 %% a와 같지 않음).
따옴표를 사용해보십시오.
cmd /C "C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*"
Commend Prompt (공백 프롬프트)의 공백 (VBA 셸 명령 코드 줄)
VBA를 통해 자동화 할 때 명령 창에서 내용을 텍스트 파일로 가져올 때 명령 프롬프트에 공백이되는 매우 비슷한 문제가 발생했습니다. 이 스레드는 나에게 해결책을 얻지 못한 길을 따라 잡은 많은 사람들 중 하나였습니다.
그래서 이것은 비슷한 문제를 가진 다른 사람들을 도울 수 있습니다 : 따옴표가있는 구문은 항상 올바르게 이해하기 어렵 기 때문에 특정 예제를 보여주는 것이 항상 유용하다고 생각합니다. 셸을 통해 VBA에서 명령 프롬프트를 사용하는 추가 문제는 문제가 발생했을 때 코드 줄이 종종 오류가 발생하지 않는다는 것입니다. 실제로 검은 색 권장 창이 깜박이면 무언가 잘못되었다고 생각하게됩니다.
예를 들어 ...와 같이 텍스트 파일이있는 폴더가 있다고 가정 해보십시오.
C : \ Alans 폴더 \ test1.txt ( https://imgur.com/FELSdB6 )
폴더 이름에 공백이 있으면 문제가 발생합니다.
폴더 AlansFolder가 존재한다고 가정하면 이와 같은 것이 작동합니다.
Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
Shell "cmd.exe /c ""ipconfig /all > C:\AlansFolder\test1.txt"""
End Sub
작동하지 않습니다. (오류가 아닙니다).
Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
Shell "cmd.exe /c ""ipconfig /all > C:\Alans Folder\test1.txt"""
End Sub
경로 주위에 따옴표 쌍을 포함하면 작동합니다
Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
Shell "cmd.exe /c ""ipconfig /all > ""C:\Alans Folder\test1.txt"""""
End Sub
(텍스트 파일이 존재하지 않으면 만들어집니다).
가늠자의 혜택으로, 우리는 내 솔루션이 이미 주어진 것과 거의 연계되어 있음을 알 수 있습니다.
해당 코드 라인을 수동으로 주어진 명령으로 변환
ipconfig /all > "C:\Alans Folder\test1.txt"
작동하는 것 같습니다
이것은 또한 작동
ipconfig /all > C:\AlansFolder\test1.txt
이것은하지 않습니다
ipconfig /all > C:\Alans Folder\test1.txt
이 마지막 형태는 또한 새 크라의 해결책과도 연계되며….” 각 경로 주위에 따옴표를 추가하고 전체 명령을 따옴표 "…." 로 묶어야합니다 .
cmd.exe /c "ipconfig /all > "C:\Alans Folder\test1.txt""