ข้อผิดพลาดของไวยากรณ์ขณะพยายามย้ายไฟล์โดยใช้ FOR วนซ้ำ


2

ฉันพยายามวนไฟล์ทั้งหมดในโฟลเดอร์ "folder" ในโฟลเดอร์ที่ระบุและย้ายไปยังโฟลเดอร์อื่น

ฉันมีรหัสนี้:

@ECHO OFF
FOR /R C:\Users\user\Desktop\New^ folder^ 3\ %%F IN (folder\*.*) DO (
    MOVE %%F C:\Users\user\Desktop\New^ folder\
)
PAUSE

แต่จะทำให้เกิดข้อผิดพลาดทางไวยากรณ์ อย่างไรก็ตามเมื่อฉัน ECHO %% F มันจะแสดงเส้นทางแบบเต็มของแต่ละไฟล์อย่างถูกต้อง

ฉันทำอะไรผิดที่นี่

ขอบคุณ

คำตอบ:


2

คุณต้องใช้ใบเสนอราคารอบ ๆ ตัวอักษรที่มีช่องว่าง

@ECHO OFF
FOR /R C:\Users\user\Desktop\New^ folder^ 3\ %%F IN (folder\*.*) DO (
    MOVE "%%~F" "C:\Users\user\Desktop\New folder\"
)
PAUSE

มันทำงานเหมือนมีเสน่ห์ใจอธิบายว่า '~' มีความหมายอะไรและทำไมฉันถึงใช้ '^' ในพารามิเตอร์ที่สองไม่ได้?
bruneti12

@ bruneti12 เครื่องหมายตัวหนอน~จะลบ (ถ้ามี) ใบเสนอราคาโดยรอบออกจากตัวแปร เหตุผลที่คุณไม่สามารถยกเว้น^ช่องว่างได้นั้นเป็นเพราะโปรแกรม MOST เข้มงวดมากเกี่ยวกับการใช้ช่องว่างเป็นตัวคั่นพารามิเตอร์ ดังนั้นหากคุณต้องการเส้นทางทั้งหมดที่มีช่องว่างส่งเป็นพารามิเตอร์เดียวกับคำสั่งย้าย มันจะต้องอยู่ในเครื่องหมายคำพูด call /?สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการปรับเปลี่ยนตัวแปรดู นี่คือบางเว็บไซต์อ้างอิงชุดใหญ่: robvanderwoude.comและss64.com
David Ruhmann
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.