ฉันจะลบบรรทัดที่คล้ายกันออกจากไฟล์ข้อความ (รายการรูปภาพ) โดยใช้ batch, Jscript (JREPL?) หรือ vBScript ได้อย่างไร


1

สภาพแวดล้อมคือ WindowsXP (อาจอัพเกรดเป็น Windows7 เร็ว ๆ นี้)
ฉันได้รับอนุญาตให้เรียกใช้สคริปต์ แต่ไม่อนุญาตให้ติดตั้งเครื่องมือ

โดยทั่วไปแบตช์บริสุทธิ์ล้มเหลวเนื่องจากปัญหาด้านประสิทธิภาพหรืออักขระ 'พิเศษ' (เช่นเครื่องหมายอัศเจรีย์)

โดยทั่วไปแล้ว FINDSTR ล้มเหลวเนื่องจากพบทุกอินสแตนซ์ของสตริงการค้นหาไม่ใช่แค่การจับคู่ครั้งแรก

โซลูชันที่ใกล้เคียงที่สุดที่ฉันพบคือที่กล่าวถึงโดย dbenham ที่: http://www.dostips.com/forum/viewtopic.php?p=39534#p39534

โดยทั่วไปไฟล์ข้อความของฉันจะมีรายการรูปภาพ (2MB) (เวอร์ชันล่าสุดก่อน) ต่อโฟลเดอร์ (ตามลำดับตัวอักษร) ซึ่งมักจะสร้างผ่านทางบรรทัดคำสั่ง: dir * .jpg / o: -d / b / s> test.txt

ฉันต้องการเก็บบรรทัดที่แสดงเวอร์ชันล่าสุดของแต่ละภาพเท่านั้น (ทำเครื่องหมายด้วยเครื่องหมายดอกจันด้านล่าง)

โดยพื้นฐานแล้วฉันต้องการเก็บบรรทัดแรกสำหรับแต่ละรหัสภาพ (แปดตัวอักษรก่อนหน้า #)

ลำดับของภาพที่แสดงจะต้องไม่เปลี่ยนแปลงเนื่องจากรายการจะใช้เพื่อเรียกใช้สไลด์โชว์:

D:\2016 London\2016-01-02 DSCN2111#227 bridge top.jpg   *
D:\2016 London\2016-01-02 DSCN2111#211 bridge top.jpg
D:\2016 London\2016-01-02 DSCN2111#110 bridge top.jpg
D:\2016 Paris\2016-01-01 imag1233#121 restaurant.jpg    *
D:\2016 Paris\2016-01-01 imag1233#110 restaurant.jpg
D:\2016 Paris\2016-01-01 P0001232#110 procession¿.jpg   *
D:\2016 Paris\2016-01-01 DSC_1231#111 skyline^05am.jpg  *
D:\2016 Paris\2016-01-01 DSC_1231#110 skyline^05am.jpg
D:\2016 Paris\2016-01-01 DSCN1230#310 fountain {!}.jpg  *
D:\2016 Paris\2016-01-01 DSCN1230#224 fountain {!}.jpg
D:\2016 Paris\2016-01-01 DSCN1230#110 fountain {!}.jpg

1
เราไม่ใช่บริการเขียนสคริปต์ เราคาดว่าผู้ใช้จะบอกเราถึงสิ่งที่พวกเขาได้ลองมาแล้ว (รวมถึงสคริปต์ที่ใช้) และที่ติดขัดเพื่อให้เราสามารถช่วยแก้ไขปัญหาเฉพาะได้ คำถามที่ว่ามีเพียงขอสคริปต์กว้างเกินไปและมีแนวโน้มที่จะวางไว้หรือปิด โปรดอ่านฉันจะถามคำถามที่ดีได้อย่างไร .
DavidPostill

อ๊ะ! ขออภัยไม่ได้หมายความว่าจะทำให้ขุ่นเคือง ฉันเป็นมือใหม่ทั้งหมดในฟอรัมใด ๆ และได้อ่านอย่างละเอียดก่อนโพสต์ ฉันเชื่อว่าสิ่งนี้เกี่ยวข้องกับคนอื่น ๆ และพยายามแก้ปัญหานี้มาหลายเดือนแล้วและต้องการหลีกเลี่ยงไซต์ที่มีการจัดระเบียบอย่างดีของคุณพร้อมลิงก์หลายร้อยรายการและโค้ดที่ไม่เพียงพอที่เขียนโดยฉัน ฉันกลัวว่าสมองลูกสมุนของฉันตอนนี้อาจจะผ่านวันที่ใช้งานสำหรับระดับของความเข้มข้นที่จำเป็นในการประสบความสำเร็จ! ที่กล่าวว่าฉันได้แก้ไขโพสต์ หากฉันละเมิดกฎโปรดลบและฉันจะพยายามแก้ไขไฟล์ด้วยตนเอง
ทำลาย

1
ฉันเห็นว่าคุณไม่สามารถติดตั้งเครื่องมือ แต่ให้ฉันถามว่าคุณติดตั้ง NotePad ++ หรือไม่ มันจะช่วยได้มาก
Gombai Sándor

ไม่ไม่ได้ตอนนี้ขอโทษ ฉันไม่แน่ใจเช่นกันว่าสามารถเรียกใช้ Notepad ++ จากไฟล์แบตช์ได้หรือไม่ ฉันหมายถึงการเรียกว่ามีอาร์กิวเมนต์เพื่อให้กระบวนการค่อนข้างอัตโนมัติ
ทำลาย

คำตอบ:


2

ฉันจะพาคุณไปที่คำพูดของคุณว่ารายการนั้นเรียงลำดับแล้วเช่นไฟล์ที่มีชื่อนั้นต่อเนื่องกันไปแล้วและรายการล่าสุดนั้นจะถูกระบุไว้ก่อนเสมอ

ไม่ควรยากที่จะเขียนสคริปต์ VBS หรือ JScript โดยเฉพาะ แต่อาจจะง่ายกว่าการใช้ JREPL กับผู้ใช้ JScript ที่ให้บริการดังนี้:

jrepl "^(.+?)#.*$" "if ($1==prev) {false} else {prev=$1;$0}" /jmatch /jbeg "prev=''" /f test.txt

1
ใช่โซลูชัน JREPL ของคุณดีเมื่อถูกเรียกจากแบตช์ไฟล์ดังนั้น: โทร jrepl "^ (. +?) #. * $" "ถ้า ($ 1 == prev) {false} อื่น {prev = $ 1; $ 0}" / jmatch / jbeg "prev = ''" / f test.txt / o best-of.txt ฉันขอบคุณมากสำหรับความช่วยเหลือของคุณที่นี่และสำหรับ JREPL.BAT ของคุณซึ่งตอนนี้เป็นเครื่องมือสำคัญในการรักษาคอลเลกชันส่วนตัวขนาดใหญ่ของ ( ภาพนกส่วนใหญ่) จากทั่วโลก มีวิธีฉันสามารถ pm คุณคุณควรสนใจในขั้นตอนต่าง ๆ ของการบำรุงรักษาหรือขอบคุณกตัญญูความคิดเห็นเกี่ยวกับขลุ่ย ฯลฯ
ทำลาย
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.