回答:
その場合、単一引用符は機能しません。各パスを引用符で囲み、コマンド全体を引用符で囲む必要があります。
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"
二重引用符で問題が解決しない場合は、たとえば
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")を含むテキストを1つの文字列として解釈し、単一引用符( 'xyz')内のテキストをコマンドとして解釈します。例えば:
FOR %% A in( 'dir / b / s * .txt')do( 'command')
FOR %% A for( 'dir / b / s * .txt')do(echo "%% A")
また、cmdはbashのように大文字と小文字を区別しません。したがって、「New fiLE.txt」と「new file.TXT」はそれに似ています。
*注意:上記の場合の%% A変数では大文字と小文字が区別されます(%% Aは%% aと等しくありません)。
set "CMD=C:\Program Files (x86)\PDFtk\bin\pdftk"
echo cmd /K ""%CMD%" %D% output trimmed.pdf"
start cmd /K ""%CMD%" %D% output trimmed.pdf"
これは私のためにバッチファイルで働いた
引用符を追加するだけ
例:「C:\ Users \ User Name」
それが解決したことを願っています!
引用符を使用してみてください。
cmd /C "C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*"
コマンドプロンプトのスペース(VBAシェルコマンドコード行)
コマンドウィンドウからテキストファイルにコンテンツを取得するためにVBAを介して自動化すると、非常によく似た問題が発生し、コマンドプロンプトにスペースができてしまいました。このスレッドは、私が解決策を十分に得られなかった方法で私が見つけた多くのスレッドの1つでした。
したがって、これは同様の問題を持つ他の人を助ける可能性があります:引用符付きの構文は常に正しく理解することが難しいため、いくつかの特定の例を示すことは常に役立つと思います。シェルのことを介してVBAのコマンドプロンプトを使用するときに発生する追加の問題は、何かがうまくいかなくてもコード行がエラーにならないことが多いということです。
例として、次のようなテキストファイルを含むフォルダがあるとします。
C:\ Alans Folder \ 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""