วิธีการเรียกใช้บรรทัดคำสั่งโดยใช้ vba เพื่อแสดงรายการชื่อไฟล์


3

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

ฉันต้องการแสดงรายการไฟล์ทั้งหมดในโฟลเดอร์เฉพาะที่เป็นนามสกุลไฟล์. doc แต่ฉันต้องการแยกอักขระสามตัวแรกของชื่อไฟล์ที่ได้รับการพิมพ์ไปยังไฟล์ข้อความเอาต์พุตของฉัน (หมายเหตุ: ฉันกำลังใช้ vba เพราะนี่เป็นหนึ่งในคำสั่งที่แตกต่างกันหลายคำที่ฉันต้องการใช้กับมาโคร vba เดี่ยวและแบตช์ไฟล์ถูกบล็อกสำหรับฉันดังนั้นฉันต้องการทำงานโดยตรงกับพรอมต์คำสั่ง)

รหัสต่อไปนี้ใช้งานได้และให้ชื่อไฟล์ที่ไม่มีนามสกุลไฟล์ (เช่นABC201704.docจะกลับมาเป็นABC201704 )

%comspec% /c for %i in (C:\Test\ABC*.doc) do @echo %~ni >> C:\Test\Output.txt

อย่างไรก็ตามฉันไม่ทราบวิธีการแก้ไขเพื่อไม่ให้มี 3 ตัวอักษรแรก (เช่นมันจะส่งคืน201704แทนABC201704 ) ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก! ฉันลองใช้ลิงค์ต่อไปนี้ แต่ฉันไม่สามารถเข้าใจวิธีการทำงานให้กับสถานการณ์ของฉัน

วิธีใดก็ตามที่จะได้รับอักขระสองสามตัวแรกของชื่อไฟล์ในการเขียนโปรแกรมไฟล์แบตช์ DOS

คำตอบ:



0

ฉันไม่รู้วิธีแก้ไขสิ่งนี้เพื่อไม่ให้มีอักขระ 3 ตัวแรก

ใช้แบตช์ไฟล์ต่อไปนี้ (test.cmd):

@echo off 
setlocal enabledelayedexpansion
for %%i in (C:\Test\ABC*.doc) do (
   set _file=%%~ni 
   set _file=!_file:~3!
   echo !_file!
   ) >> C:\Test\Output.txt
endlocal

จากนั้นในรหัส VBA ของคุณ:

%comspec% /c test.cmd

อ่านเพิ่มเติม

  • ดัชนี AZ ของบรรทัดคำสั่ง Windows CMD - การอ้างอิงที่ยอดเยี่ยมสำหรับทุกสิ่งที่เกี่ยวข้องกับบรรทัด Windows cmd
  • เปิดใช้งานการขยายเวลาล่าช้า - การขยายที่ล่าช้าจะทำให้ตัวแปรขยายตัวในเวลาดำเนินการแทนการแจงเวลา
  • สำหรับ - ดำเนินการคำสั่งแบบมีเงื่อนไขกับหลาย ๆ ไฟล์
  • ตัวแปร - แยกส่วนของตัวแปร (สตริงย่อย)

น่าเสียดายที่ไม่ได้ผลสำหรับฉัน หน้าต่าง cmd จะปรากฏขึ้นอย่างรวดเร็วและหายไปราวกับว่ามันไม่ได้รันโค้ด ไฟล์แบทช์ถูกบล็อกในระบบของฉันดังนั้นอาจมีบางอย่างที่เกี่ยวข้องกับมัน
ampsoccer17

@ ampsoccer17 ลอง%comspec% /k test.cmdแทน
DavidPostill

ฉันเปลี่ยนรหัส vba เป็น C: \ Test \ test.cmd และแก้ไขปัญหานั้น แต่นำฉันกลับไปที่ปัญหาแรกของฉันว่าแบตช์ไฟล์ถูกบล็อกในระบบของฉันดังนั้นจึงไม่สามารถทำงานได้
ampsoccer17
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.