การสร้างโฟลเดอร์ตามชื่อไฟล์โดยไม่ต้องเขียนทับ

ทำงานกับสคริปต์โดยเจ้าหน้าที่จะสแกนใบรับรองการสอบของนักเรียนผ่านเครื่องถ่ายเอกสารแล้วจึงวางสำเนาไปยังสถานที่

สคริปต์ด้านล่างทำสิ่งต่อไปนี้

1) สแกนไปที่ C:\users\location เป็น filename.pdf (เจ้าหน้าที่จะป้อนหมายเลขนักเรียนด้วยตนเองที่เครื่องถ่ายเอกสาร และจะบันทึกชื่อไฟล์ไว้ดังกล่าว)

2) สคริปต์จะสร้างโฟลเดอร์ตามชื่อไฟล์ ดังนั้นที่นี่จะสร้างโฟลเดอร์ชื่อ /filename

3) ย้าย PDF ไปยังโฟลเดอร์นั้น

ทุกอย่างทำงานได้ดี แต่ฉันพยายามแก้ไขเพื่อไม่ให้เขียนทับ

ดังนั้น หากตัวอย่าง พนักงานพิมพ์ผิด Student1 และ Student1 มีอยู่แล้ว เราก็ไม่ต้องการแทนที่มัน

ข้อเสนอแนะใด ๆ

สคริปต์ด้านล่างคุณสามารถทดสอบได้

Code:

@echo off
pushd C:\Users\location
for %%F in (*.pdf) do (
  2>nul md "%%~nF"
  >nul move /y "%%~nF*.*" "%%~nF"

)
popd

person user2495138    schedule 14.05.2015    source แหล่งที่มา


คำตอบ (1)


คุณไม่สามารถเขียนทับโฟลเดอร์ด้วย MD ได้ ดังนั้นฉันคิดว่าคุณกำลังพูดถึงการดำเนินการย้าย:

@echo off
pushd C:\Users\location
for %%F in (*.pdf) do (
  2>nul md "%%~nF"
  echo n|move /-y "%%~nF*.*" "%%~nF"  >nul 2>nul

)
popd

หรือ (อาจขึ้นอยู่กับการตั้งค่าในเครื่องและอินพุตที่คาดหวังภายใน move /-y)

@echo off
pushd C:\Users\location
for %%F in (*.pdf) do (
  2>nul md "%%~nF"
  echo n|move /-y "%%~nF*.*" "%%~nF" 2>&1 |find /i "0 files(s)" >nul 2>nul || (
      2>nul md "%%~nF_2"
      move "%%~nF_2*.*" "%%~nF_2" >nul 2>nul
  )

)
popd
person npocmaka    schedule 14.05.2015