รับขนาดไฟล์และบันทึกลงในตัวแปรในคอนโซล Windows หรือไม่


1

ฉันกำลังสร้างสคริปต์แบทช์ windows ฉันต้องได้ขนาดที่เฉพาะเจาะจงของไฟล์เพื่อให้ฉันสามารถแทรกนั้นและค่าอื่น ๆ ที่ฉันได้ไปยังฐานข้อมูลแล้ว แต่ฉันก็ไม่สามารถหาวิธีที่เหมาะสมที่จะทำ

สมมติว่าชื่อของไฟล์คือc:\test!basename!.zip(ฉันอยู่ใน for for loop ที่นี่) ฉันจะรับขนาดไฟล์และเก็บไว้ในตัวแปรได้อย่างไร?

เครื่องนี้เป็นเซิร์ฟเวอร์ Win2008

ตอบ

EliadTech เสนอวิธีแก้ปัญหาที่ฉันได้ลองไปแล้ว

for %I in (test.jpg) do @echo %~zI

ที่ทำงานโดยตรงในพรอมต์คำสั่ง แต่ล้มเหลวภายในสคริปต์

EliadTech ในขณะที่เราสงสัยแล้วคิดว่าจะตรวจสอบการหลบหนีดังนั้นเราจึงได้รับนี้

for %%I in (c:\test\!basename!.zip) do @echo yay %%~zI

ทำงานเหมือนจับใจ

ค่อนข้างผิดพลาดโง่ แต่ทุบตีทำให้ฉันเสียเกินกว่าจะซ่อม :)

คำตอบ:


2

มีข้อเสนอแนะบางประการที่นี่ ฉันคิดว่านี่เหมาะที่สุดสำหรับคุณ:

for %I in (test.jpg) do @echo %~zI

1
ฉันได้ลองแล้ว แต่ในสคริปต์ แต่เมื่อ doig for %I in (c:\test\!basename!.zip) do @echo yay %~zIฉันได้รับThe following usage of the path operator in batch-parameter substitution is invalid %~zI
Hito_kun

ฉันคิดว่ามันเกี่ยวข้องกับการขยายเวลาล่าช้า - ลองโดยไม่ลองหรือแทนที่ "!" ด้วย "%" ปกติที่นี่
EliadTech

ฉันสงสัยว่ามันเป็นอย่างแม่นยำว่า (หรือการหลบหนีที่แปลกประหลาดไม่ได้ทำ) ลองทั้งสองวิธีไม่มีใครทำงาน ฉันจะดูต่อไป
Hito_kun

อย่างจริงจัง? มันใช้งานได้กับ OOB สำหรับฉัน (แม้ว่าฉันจะลองตรงๆใน CMD) คุณเพิ่ม "%" ก่อนหน้า "%" ทุกครั้งหรือไม่ ลองใช้สายนี้แยกกัน
EliadTech

ใช่เรียกใช้โดยตรงจากสถานีทำงานได้อย่างสมบูรณ์ แต่จากสคริปต์มันล้มเหลวลองสิ่งที่คุณพูด
Hito_kun
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.