ย้ายไฟล์ตามวันที่ประทับด้วยแบทช์

ฉันต้องย้ายไฟล์จากโฟลเดอร์ทั้งหมดบนฮาร์ดไดรฟ์ทั้งหมดที่แก้ไขภายในสองวัน เนื่องจากฉันเพิ่งเริ่มใช้แบตช์ โปรดอธิบายว่าทั้งหมดนี้หมายความว่าอย่างไร

สิ่งที่ฉันต้องการ:

ค้นหาโฟลเดอร์ทั้งหมดในฮาร์ดไดรฟ์ทั้งหมดสำหรับไฟล์ที่แก้ไขตั้งแต่วันที่ 10 พฤศจิกายน 2013 ถึง 11 พฤศจิกายน 2013 สร้างโฟลเดอร์ในไดรฟ์ D:/backups/11_11 ย้ายไฟล์ทั้งหมดที่พบในการสแกนที่แก้ไขด้วยวันที่และปีไปยังโฟลเดอร์ที่สร้าง สร้าง ไฟล์ข้อความพร้อมบันทึกไฟล์ทั้งหมดที่ถูกย้าย ข้อผิดพลาด และเวลาในการย้าย (ไม่บังคับเวลาของการย้าย)


person user2755744    schedule 12.11.2013    source แหล่งที่มา


คำตอบ (1)


@ECHO OFF &SETLOCAL
set "date1=01/09/2013"
set "date2=31/10/2013"
set "SearchPath=D:/backups/11_11"
set "datestamp1=%date1:~6,4%%date1:~3,2%%date1:~0,2%"
set "datestamp2=%date2:~6,4%%date2:~3,2%%date2:~0,2%"

for %%a in ("%searchpath%\*") do (
    set "fname=%%~a"
    for /f "tokens=1-3 delims=/-. " %%b in ("%%~ta") do set "datestampF=%%~d%%~c%%~b"
    SETLOCAL ENABLEDELAYEDEXPANSION
    if "!datestampF!" gtr "%datestamp1%" if "!datestampF!" lss "%datestamp2%" echo move "!fname!" "DestinationFolder"
    endlocal
)

ลบ echo เพื่อให้มันทำงานได้

person Endoro    schedule 12.11.2013
comment
@foxidrive ใช่คุณพูดถูกและฉันก็รู้เรื่องนี้เช่นกัน รหัสของฉันอธิบายขั้นตอนพื้นฐาน และเป็นฟรีแวร์ แพทช์ยินดีต้อนรับ - person Endoro; 13.11.2013
comment
อิอิ ถ้าอย่างนั้นก็แค่ค้นหาทุก ๆ ไดรฟ์แล้วคัดลอกไฟล์ไปยัง searchpath BTW ตัวแปร searchpath ที่สองเป็นบรรทัดการดีบักหรือไม่ - person foxidrive; 13.11.2013
comment
@foxidrive ที่ผู้ใช้ต้องระบุ all drives คืออะไร? แล้วแท่ง USB ไดรฟ์เครือข่าย และซีดีรอมล่ะ และใช่ บรรทัดการตั้งค่า %searchpath% ที่สองนี้มาจากการทดสอบ :) -removed ขอบคุณ! - person Endoro; 13.11.2013
comment
Search all folders in all hard drives for files ดังนั้นเขาจึงทำกิจวัตรประจำวันเพื่อตรวจหาฮาร์ดไดรฟ์เท่านั้น Wmic อาจทำงานที่นั่นได้ หากคุณรู้สึกอยากลงแรง - หาก OP ตอบกลับเลย - person foxidrive; 13.11.2013