วันนี้ผมได้ให้คำปรึกษาเรื่องการสร้างเครื่องมือสำหรับช่วยงาน โดยมีความต้องการ อยากได้โค้ดสำหรับคัดลอกรูปภาพ จากโฟลเดอร์ต้นทางที่เก็บรูปไว้หลายรูป โดยให้คัดลอกไปทั้งหมด แล้วเอาไปวางไว้ในโฟลเดอร์ปลายทาง ที่มีโฟลเดอร์ในนั้นหลายๆ โฟลเดอร์ เอารูปไปวางในโฟลเดอร์เหล่านั้น 1 โฟลเดอร์ ต่อ 1 รูป
โดยปกติหากต้องการสร้าง Batch Script ไฟล์ เพื่อคัดลอกรูปภาพจากโฟลเดอร์หนึ่งไปยังโฟลเดอร์อื่นให้ทำตามขั้นตอนเหล่านี้
1. เปิด Notepad และสร้างไฟล์ใหม่
2. พิมพ์คำสั่งต่อไปนี้ในไฟล์:
'xcopy source_folder\*.jpg destination_folder\'
แทนที่ 'source_folder' ด้วยเส้นทางของโฟลเดอร์ที่มีรูปภาพที่คุณต้องการคัดลอก และ 'destination_folder' ด้วยเส้นทางของโฟลเดอร์ที่คุณต้องการคัดลอกรูปภาพไป
3. บันทึกไฟล์ด้วยส่วนขยายหรือเปลี่ยนชื่อนามสกุลไฟล์ให้เป็น .bat ตัวอย่างเช่น "copy_images.bat"
4. เมื่อจะใช้งานก็ดับเบิลคลิกที่ Batch Script ไฟล์เพื่อเรียกใช้
สิ่งนี้จะคัดลอกไป คือไฟล์ .jpg ทั้งหมดในโฟลเดอร์ต้นทางไปยังโฟลเดอร์ปลายทาง คุณสามารถแทนที่ .jpg ด้วยส่วนขยาย หรือนามสกุลไฟล์ที่คุณเลือกหากคุณต้องการคัดลอกรูปภาพประเภทอื่น ๆ
แต่อย่างที่บอกว่า แบบนี้ก็ คือ พื้นฐานที่เราใช้งานกันใน Batch Script ไฟล์ แต่เวลาเราจะใช้งานจริงๆ ความต้องการไม่ใช่แบบนั้น เรายังมีความต้องการที่หลากหลายมากขึ้นไปอีก
อีกวิธี เป็นการคัดลอกรูปภาพแล้วนำไปวางโดยการสร้างโฟลเดอร์ขึ้นมาใหม่ตามชื่อรูปที่เราต้องการวาง
นี่คือตัวอย่าง Batch Script ไฟล์ที่คัดลอกภาพหนึ่งภาพ (ระบุด้วยชื่อ) จากโฟลเดอร์หนึ่งไปยังอีกโฟลเดอร์ และสร้างโฟลเดอร์ใหม่ตามชื่อรูปภาพ:
@echo off
setlocal
set source=C:\path\to\source\folder
set image=image.jpg
set destination=C:\path\to\destination\folder
rem Create a new folder with the image name
md "%destination%\%image:~0,-4%"
rem Copy the image to the new folder
copy "%source%\%image%" "%destination%\%image:~0,-4%"
echo "Image copied to %destination%\%image:~0,-4%"
pause
แทนที่โฟลเดอร์ 'source' เป็นตำแหน่งโฟลเดอร์ 'image' คือชื่อรูป และโฟลเดอร์ 'destination' ปลายทาง
คำสั่ง 'md' สร้างโฟลเดอร์ใหม่โดยใช้ชื่อรูปภาพโดยไม่ต้องขยายไฟล์ (`%image:~0,-4%`) คำสั่ง 'Copy' คัดลอกรูปภาพจากโฟลเดอร์ 'source' ไปยังโฟลเดอร์ใหม่ที่สร้างขึ้นใน 'destination'
คุณสามารถบันทึกสคริปต์นี้เป็นไฟล์ '.bat' และเรียกใช้โดยดับเบิลคลิกที่มัน สคริปต์จะหยุดชั่วคราวในตอนท้ายเพื่อที่คุณจะได้เห็นผลลัพธ์
ความต้องการสุดท้ายที่ยกตัวอย่าง คือ การคัดลอกรูปจากโฟลเดอร์ต้นทาง ไปวางยังโฟลเดอร์ปลายทาง แบบให้วางรูปไว้ในโฟลเดอร์ 1 โฟลเดอร์ต่อ 1 รูป
@echo off
setlocal enabledelayedexpansion
set /p FolderPath=Enter the floder Copy path:
cd %FolderPath%
set ar=0
set count=0
for %%i in (*.jpg) do (
set "ary[!ar!]=%%i"
echo %FolderPath%\%%i
set /A ar+=1
set /A count+=1
)
set arT=0
set /p TargetfolderPath=Enter the target floder path:
cd %TargetfolderPath%
for /D %%i in (.\*) do (
set "aryTarGetFloder[!arT!]=%%i"
echo %TargetfolderPath%\%%i
set /A arT+=1
)
echo ------
echo %aryTarGetFloder[1]%
echo ------
set "x=0"
:SyLoop
if defined aryTarGetFloder[%x%] (
echo %FolderPath%\!ary[%x%]!
echo TO
echo %TargetfolderPath%\!aryTarGetFloder[%x%]!\!ary[%x%]!
COPY "%FolderPath%\!ary[%x%]!" "%TargetfolderPath%\!aryTarGetFloder[%x%]!\!ary[%x%]!"
set /a "x+=1"
timeout /t 1
GOTO :SyLoop
)
echo Completed the copy.
pause
คำอธิบายดูได้ในคลิปวีดีโอด้านล่างนะครับ
ไม่มีความคิดเห็น:
แสดงความคิดเห็น