ฉันต้องการให้ทุกภาษาแยกกันในไฟล์ zip ชื่อ xx_XX.zip ดังนี้
domain-cs_CZ.mo
domain-cs_CZ.po => cs_CZ.zip
domain-da_DK.mo
domain-da_DK.po => dk_DK.zip
domain-de_DE.mo
domain-de_DE.po => de_DE.zip
บน Windows ให้ใช้ไฟล์แบตช์ต่อไปนี้ (test.cmd):
@echo off
setlocal
setlocal enabledelayedexpansion
rem get a list of unique filenames
for /f "usebackq" %%f in (`dir /b domain-*.*`) do (
set _file=%%~nf
echo !_filelist! | find "!_file!" > nul
rem if true we have a new name, strip off domain- (1st 7 chars) and save to a file to process later
if not !errorlevel! == 0 set "_filelist=!_filelist!!_file! " && echo !_file:~7!>>files.txt
)
rem process the list
for /f %%f in (files.txt) do (
zip %%f.zip *%%f.*
)
rem tidy up
del files.txt
endlocal
ตัวอย่างผลลัพธ์:
F:\test>dir domain-*.*
Volume in drive F is Expansion
Volume Serial Number is 3656-BB63
Directory of F:\test
15/02/2016 10:48 0 domain-cs_CZ.mo
15/02/2016 10:49 0 domain-cs_CZ.po
15/02/2016 10:49 0 domain-da_DK.mo
15/02/2016 10:49 0 domain-da_DK.po
15/02/2016 10:49 0 domain-de_DE.mo
15/02/2016 10:49 0 domain-de_DE.po
6 File(s) 0 bytes
0 Dir(s) 1,774,192,197,632 bytes free
F:\test>test
zip cs_CZ.zip *cs_CZ.*
zip da_DK.zip *da_DK.*
zip de_DE.zip *de_DE.*
อ่านเพิ่มเติม
- ดัชนี A-Z ของบรรทัดคำสั่ง Windows CMD - การอ้างอิงที่ยอดเยี่ยมสำหรับทุกสิ่งที่เกี่ยวข้องกับ Windows cmd line
- enabledelayedexpansion - การขยายเวลาที่ล่าช้าจะทำให้ตัวแปรขยายตัวในเวลาดำเนินการแทนเวลาแจง
- สำหรับ / f - คำสั่งวนซ้ำกับผลลัพธ์ของคำสั่งอื่น
- พารามิเตอร์ - อาร์กิวเมนต์บรรทัดคำสั่ง (หรือพารามิเตอร์) คือค่าใด ๆ ที่ส่งผ่านไปยังสคริปต์ชุดงาน
- ชุด - แสดงตั้งค่าหรือลบตัวแปรสภาพแวดล้อม CMD การเปลี่ยนแปลงที่ทำกับ SET จะยังคงอยู่เฉพาะช่วงเวลาของเซสชัน CMD ปัจจุบัน
- ตัวแปร - แยกส่วนของตัวแปร (สตริงย่อย)