Dennis mengidentifikasi satu masalah dan memberikan solusi dalam jawabannya. Namun masih ada masalah lain.
1) Kode Anda set partial_name = %%G
akan menyertakan spasi tambahan dalam nama variabel dan spasi terdepan dalam nilai. Kode harus dibaca set partial_name=%%G
2) milik Anda %1
nilai mungkin sudah dikutip, dalam hal ini Anda harus menghapus tanda kutip sebelum menambahkan Anda sendiri dengan menggunakan "%~1"
dari pada "%1"
.
3) Mungkin bukan masalah dalam kasus Anda, tetapi umumnya merupakan ide yang baik untuk menyertakan path file dalam tanda kutip jika namanya mengandung spasi atau karakter khusus.
4) Saya berasumsi Anda ingin melakukan perbandingan angka. Perintah IF menggunakan aturan yang hampir sama dengan perintah SET / A ketika mencoba mengurai angka - Angka apa pun yang diawali dengan 0 akan diperlakukan sebagai notasi heksadesimal. Jika menemukan digit hex yang tidak valid seperti 8 atau 9, maka IF akan kembali ke perbandingan string, bukan perbandingan numerik.
Sebagai contoh if 09 lss 8 (echo true) else echo false
kembali true
.
Jadi, jika segmen ke-2 dari nama file Anda memiliki potensi untuk memimpin nol, maka Anda perlu melakukan lebih banyak pekerjaan.
set "partial_name="
for /f "tokens=2 delims=." %%G in ("%~1") do (
for /f "tokens=* delims=0" %%N in ("%%G") do set /a "partial_name=%%N"
if not defined partial_name set "partial_name=0"
)
if %partial_name% GEQ 9200 (
move "I:\rosa\transfertmp\%1" "L:\OSLDos\Tmp\"
) else (
move "I:\rosa\transfertmp\%1" "L:\LdisOSLDos\Tmp\"
)