batch file ทำอะไรได้มากกว่าที่คิด by tosawat
Mar0
วันนี้ได้รับโจทย์มาว่า ให้เขียน Script อะไรก็ได้ copy ไฟล์ ชื่อ skill_1 และ skill_2 จากใน(หลายๆๆๆๆๆๆๆ) folder แล้ว rename ให้ชื่อ file เหมือนกับชื่อ folder ตามด้วย _1 และ _2 ตามลำดับ แล้วเอาออกไปไว้รวมกัน ก็เลยเขียนเป็น batch file ซะเลย
ตอนแรกที่เขียนๆไป code ก็หน้าตาประมาณนี้
@echo off
for /r %%a in ("*skill_1.png") do (
set str=%%~pa
copy %%a %str:~0,-1%_1.png
)
for /r %%a in ("*skill_2.png") do (
set str=%%~pa
copy %%a %str:~0,-1%_2.png
)
แต่แล้วปัญหาก็เกิดขึ้น คือคำสั่ง set เนี่ยมันยังไงไม่รุ เหมือนกันไป set ทีเดียวตอนจบการทำงานทั้งหมด พอ run code นี้ ก็เลยได้ออกมา 2 ไฟล์ เพราะ str ดันออกมามีค่าเดียวซะงั้น – -”
ก็เลยแก้ปัญหาด้วยการ สร้าง batch file อีกอันตั้งชื่อว่า copy_rename2.bat แล้วแยก code ออกเป็น 2 ไฟล์ดังนี้
1.
@echo off
for /r %%a in ("*skill_1.png") do (
echo %%~pa
call "copy_rename2" %%~pa
)
2.
@echo off
set str=%1
echo %str:~0,-1%
copy %1skill_1.png %str:~0,-1%_1.png
copy %1skill_2.png %str:~0,-1%_2.png
แล้วเอาวางไว้ข้างๆกัน พอ run batch file อันที่ 1 มันก็ไปเรียก อันที่2 โดยทำให้ตัวแปร str มันแยกกันคนละ session คร้าาฟฟฟฟ
Enjoy this article?
Consider subscribing to our RSS feed!
ไม่มีความเห็น
ยังไม่มีความเห็น