Jawaban:
Tanda kutip tunggal tidak akan berlaku dalam kasus itu. Anda harus menambahkan tanda kutip di sekitar setiap jalur dan juga melampirkan seluruh perintah dalam tanda kutip:
cmd /C ""C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*""
cmd /C
CEEMEA & LATAM.doc
. Apa yang harus saya lakukan? "C:\Program Files\WinRAR\rar" a -agmmddyy -x*CEEMEA & LATAM.doc ".rar"
Saya baru tahu bahwa untuk kasus di mana jalur melibatkan penggunaan karakter spasi putih, misalnya, ketika saya perlu mengakses aplikasi xyz
yang lokasinya:
C:\Program Files\ab cd\xyz.exe
Untuk menjalankan ini dari windows cmd prompt, Anda harus menggunakan
C:\"Program Files"\"ab cd"\xyz.exe
atau
"C:\Program Files\ab cd\xyz.exe"
Jika tanda kutip ganda tidak menyelesaikan masalah maka coba misalnya
dir /X ~1 c:\
untuk mendapatkan daftar file alternatif atau nama direktori. Contoh output:
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)
Sekarang gunakan nama file 8 folder atau nama pendek di kolom 5, misalnya PROGRA ~ 1 atau DEFAUL ~ 1.XML, dalam perintah Anda. Misalnya:
set JAVA_HOME=c:\PROGRA~1\Java\jdk1.6.0_45
Lampirkan jalur yang berisi spasi dengan tanda kutip ganda.
cmd /C "C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*"
Rar.exe
sebenarnya. Anda mungkin salah menggunakannya. Mungkin mencoba "D:\Hello 2\"
atau "D:\Hello 2"
bukan "D:\Hello 2\*.*"
?
CEEMEA & LATAM.doc
. Apa yang seharusnya? "C:\Program Files\WinRAR\rar" a -x*CEEMEA & LATAM.doc ".rar"
Cobalah untuk memberikan nama path yang kompleks dalam tanda kutip ganda (dan sertakan ekstensi file di akhir file).
Untuk file:
call "C:\example file.exe"
Untuk Direktori:
cd "C:\Users\User Name\New Folder"
CMD mengartikan teks dengan tanda kutip ganda ("xyz") sebagai satu string dan teks dalam tanda kutip tunggal ('xyz') sebagai perintah. Sebagai contoh:
UNTUK %% A dalam ('dir / b / s * .txt') do ('command')
UNTUK %% A dalam ('dir / b / s * .txt') lakukan (echo "%% A")
Dan satu hal yang baik, cmd tidak * case sensitif seperti bash. Jadi "New fiLE.txt" dan "file baru.TXT" sama saja.
* Catatan: Variabel %% A dalam kasus di atas adalah case-sensitive (%% A tidak sama dengan %% 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"
ini bekerja untuk saya dalam file batch
Cukup tambahkan Tanda Kutip
Contoh: "C: \ Users \ Nama Pengguna"
Semoga bisa dipecahkan!
Anda harus mencoba menggunakan kutipan.
cmd /C "C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*"
Spaces dalam Commend Prompt (dalam baris kode perintah VBA Shell)
Saya punya masalah yang sangat mirip yang akhirnya menjadi ruang di command prompt ketika mengotomatisasi melalui VBA untuk mendapatkan konten dari jendela perintah ke file teks. Thread ini adalah salah satu dari banyak yang saya tangkap di sepanjang jalan yang tidak cukup memberi saya solusinya.
Jadi ini dapat membantu orang lain dengan masalah yang sama: Karena sintaks dengan kutipan selalu sulit untuk diperbaiki, saya pikir menunjukkan beberapa contoh spesifik selalu berguna. Masalah tambahan yang Anda dapatkan menggunakan command prompt di VBA melalui Shell, adalah bahwa baris kode sering tidak akan kesalahan ketika terjadi kesalahan: pada kenyataannya, sekejap jendela perintah hitam menyesatkan untuk berpikir bahwa sesuatu telah dilakukan.
Sebagai contoh ... katakan saya memiliki Folder, dengan file teks di dalamnya seperti di
C: \ Alans Folder \ test1.txt ( https://imgur.com/FELSdB6 )
Ruang di sana dalam nama folder memberi masalah.
Sesuatu seperti ini akan berfungsi, dengan asumsi Folder, AlansFolder, ada
Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
Shell "cmd.exe /c ""ipconfig /all > C:\AlansFolder\test1.txt"""
End Sub
Ini tidak akan berhasil. (Tidak akan salah).
Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
Shell "cmd.exe /c ""ipconfig /all > C:\Alans Folder\test1.txt"""
End Sub
Termasuk pasangan kutipan di sekitar jalan akan membuatnya bekerja
Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
Shell "cmd.exe /c ""ipconfig /all > ""C:\Alans Folder\test1.txt"""""
End Sub
(Omong-omong, jika file teks tidak ada, maka akan dibuat).
Dengan manfaat melihat ke belakang, kita dapat melihat bahwa solusi saya mengikat sekitar dengan beberapa sudah diberikan ..
Mengonversi baris kode itu ke perintah yang diberikan secara manual akan kita miliki
ipconfig /all > "C:\Alans Folder\test1.txt"
Itu sepertinya berhasil
Ini juga berfungsi
ipconfig /all > C:\AlansFolder\test1.txt
Ini tidak
ipconfig /all > C:\Alans Folder\test1.txt
Bentuk akhir ini juga berfungsi dan terkait dengan solusi dari sakra .... " Anda harus menambahkan tanda kutip di sekitar setiap jalur dan juga melampirkan seluruh perintah dalam tanda kutip “… ..
cmd.exe /c "ipconfig /all > "C:\Alans Folder\test1.txt""
Ini dapat menyelesaikan masalah ini dengan perintah cd , perintah ini memahami spasi tanpa tanda kutip ganda dan Anda dapat memanggil program apa saja dengan cara ini misalnya:
C: \ Windows \ system32> cd c: \ Program Files \ MongoDB \ Server \ 3.2 \ bin
c: \ Program Files \ MongoDB \ Server \ 3.2 \ bin> mongo sekarang command prompt memanggil mongo.exe