Untuk memisahkan string direktori dari variabel dalam cmd

0

Saya ingin membagi nilai direktori yang disimpan dalam variabel.

Misalkan misalnya jika saya menetapkan jalur direktori (dengan tanda kutip ganda)

"C: \ Program Files \ TeamViewer \ TeamViewer.exe" ke suatu variabel Sebuah . Saya ingin membagi bagian terakhir dari variabel TeamViewer.exe ke satu variabel b dan untuk apa sebelum itu c .

Untuk catatan

  • Nilai yang saya tetapkan untuk c dapat bervariasi tergantung pada lokasi file yang saya pilih.
  • Jalur direktori tidak ditentukan sebelumnya, saya akan membuatnya ditetapkan pengguna.
Dragonborn
sumber

Jawaban:

1

Makhluk Sebuah variabel dengan path lengkap, Anda dapat melakukan ini:

@echo off
Set a="C:\Program Files\TeamViewer\TeamViewer.exe" 
For %%A in ("%a%") do (
    Set c=%%~dpA
    Set b=%%~nxA
)
echo.Folder is: %c%
echo.Name is: %b%

Dijawab dengan bantuan ini https://stackoverflow.com/questions/3667026/meaning-of-dpa

jcbermu
sumber
Ini memberi b=Teamviewer.exe" " dan c=path from where the batch file is run\TeamViewer. Hapus tanda kutip dari perintah set Anda, baris 2.
Hai @Tyler apakah mungkin untuk mendapatkannya b=Teamviewer.exe (tanpa tanda kutip) dan c untuk mengembalikan jalur yang saya berikan kepada i.e hasil yang saya inginkan adalah c = C: \ Program Files \ TeamViewer \ b = TeamViewer.exe
Dragonborn
@Dragonborn, ganti Set a="C:\Program Files\TeamViewer\TeamViewer.exe" dengan Set a=C:\Program Files\TeamViewer\TeamViewer.exe (hapus tanda kutip)
Hai @Tyler, lihat jawaban saya di bawah ini. Saya menggunakan ide Anda untuk menghapus tanda kutip dengan cara yang berbeda dan saya mendapatkan apa yang saya harapkan ..
Dragonborn
1

Terima kasih atas dukunganmu. Saya menggunakan ide Anda untuk menghapus tanda kutip tetapi tidak sejalan Set a="C:\Program Files\TeamViewer\TeamViewer.exe" tetapi di baris berikutnya For %%A in ("%a%") do ( dan itu memberi saya hasil yang saya harapkan. Saya mengubah di baris berikutnya karena ketika saya memberi tahu path yang saya dapatkan adalah pengguna didefinisikan dan path datang dengan tanda kutip secara default dan saya tidak dapat menghindari tanda kutip di baris sebelumnya.

Pengodean sampel akhir adalah seperti di bawah ini dan berfungsi seperti pesona. Terima kasih!!

@echo off
Set a="C:\Program Files\TeamViewer\TeamViewer.exe" 
For %%A in (%a%) do (
    Set c=%%~dpA
    Set b=%%~nxA
)
echo.Folder is: %c%
echo.Name is: %b%
Dragonborn
sumber
Akhirnya Anda memposting jawaban untuk pertanyaan Anda sendiri. Besar!!!
jcbermu