Thaiadmin

ขอ Batfile เปลี่ยนชื่อไฟล์โดยย้อนหลัง 1 วันครับ

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

ออฟไลน์ teentae

  • ****
  • 29
  • 0
  • เพศ: ชาย
ผมขอความช่วยเหลือครับ
เนื่องจากผมได้เขียน .bat ดังนี้ครับ

echo on
del d:\BSB\*.txt
pause


for /f "tokens=1,2,3,4 delims=/ " %%a in ("%date%") do set wday=%%a&set month=%%b&set day=%%a&set year=%%c
SET d=%year%%month%%day%
cd\
cd test
xcopy 1.txt d:bsb

d:
cd BSB
ren 1.txt 2_%d%.txt

pause

ผมได้ไฟล์มาเป็นวันที่ปัจจุบันเช่น 2_20140228.txt แต่ผมอยากให้วันที่ย้อนหลังไป 1 วันครับโดยไม่อยากให้มีผลกระทบระหว่างเดือนเช่นถ้าผมรันไฟล์วันที่ 20140301 ก็อยากให้ไฟล์ได้ออกมาเป็น 20140228 ครับ หรือรันต้นเดือนใหม่ให้ได้ชื่อเป็นสิ้นเดือนก่อนหน้านี้ครับ


ขอบคุณมากครับ
<b>กลุ่มผู้ดูแลระบบแห่งประเทศไทย ขอระงับการใช้ลายเซ็นต์รูปภาพ
อนุญาตให้ใช้ได้เพียง ลายเซ็นต์ที่เป็นข้อความ
จึงประกาศมาเพื่อขอความร่วมมือ จากสมาชิกทุกๆ ท่าน
ในนาม กลุ่มผู้ดูแลระบบแห่งประเทศไทย</b>

ออฟไลน์ ~ RoNiN ~

  • *****
  • 553
  • 7
  • เพศ: ชาย
  • ทำดีแต่อย่าเด่นจะเป็นภัย
Re: ขอ Batfile เปลี่ยนชื่อไฟล์โดยย้อนหลัง 1 วันครับ
« ตอบกลับ #1 เมื่อ: 8 มีนาคม 2014, 00:10:12 »
ทำได้หรือยังครับ สคริปแนวนี้ผมเคยทำเอาไว้อยู่อาจจะแก้นิดหน่อยแล้วเอาไปใช้งานได้เลย
Hello Thailand

ออฟไลน์ teentae

  • ****
  • 29
  • 0
  • เพศ: ชาย
Re: ขอ Batfile เปลี่ยนชื่อไฟล์โดยย้อนหลัง 1 วันครับ
« ตอบกลับ #2 เมื่อ: 19 พฤษภาคม 2014, 08:35:36 »
ทำได้หรือยังครับ สคริปแนวนี้ผมเคยทำเอาไว้อยู่อาจจะแก้นิดหน่อยแล้วเอาไปใช้งานได้เลย

ขอบคุณครับ ตอนนี้ผมใช้งานแล้วแล้วครับ แต่แก้ไขคอนฟิกใหม่โดยไม่ต้องใช้วันที่และเวลาครับ เนื่องจากเปลี่ยนรูปแบบการเก็บไฟล์ใหม่ครับ
<b>กลุ่มผู้ดูแลระบบแห่งประเทศไทย ขอระงับการใช้ลายเซ็นต์รูปภาพ
อนุญาตให้ใช้ได้เพียง ลายเซ็นต์ที่เป็นข้อความ
จึงประกาศมาเพื่อขอความร่วมมือ จากสมาชิกทุกๆ ท่าน
ในนาม กลุ่มผู้ดูแลระบบแห่งประเทศไทย</b>

ออฟไลน์ teentae

  • ****
  • 29
  • 0
  • เพศ: ชาย
Re: ขอ Batfile เปลี่ยนชื่อไฟล์โดยย้อนหลัง 1 วันครับ
« ตอบกลับ #3 เมื่อ: 19 พฤษภาคม 2014, 08:39:02 »
ทำได้หรือยังครับ สคริปแนวนี้ผมเคยทำเอาไว้อยู่อาจจะแก้นิดหน่อยแล้วเอาไปใช้งานได้เลย
ผมรบกวนขอตัวอย่างสคริ๊ปเอาไว้ศึกษาด้วยได้ไหมครับ
<b>กลุ่มผู้ดูแลระบบแห่งประเทศไทย ขอระงับการใช้ลายเซ็นต์รูปภาพ
อนุญาตให้ใช้ได้เพียง ลายเซ็นต์ที่เป็นข้อความ
จึงประกาศมาเพื่อขอความร่วมมือ จากสมาชิกทุกๆ ท่าน
ในนาม กลุ่มผู้ดูแลระบบแห่งประเทศไทย</b>

ออฟไลน์ ~ RoNiN ~

  • *****
  • 553
  • 7
  • เพศ: ชาย
  • ทำดีแต่อย่าเด่นจะเป็นภัย
Re: ขอ Batfile เปลี่ยนชื่อไฟล์โดยย้อนหลัง 1 วันครับ
« ตอบกลับ #4 เมื่อ: 19 พฤษภาคม 2014, 14:35:09 »
ต้องมี now.exe ก่อนนะครับ ถ้าเอาไปใช้กับ xp,2003
ค่าที่เอาไปใช้อันสุดท้ายคือ dateStamp7  O0
โค๊ด: [Select]
for /f "tokens=2,3,5" %%E in ('now.exe') do (set monthVar=%%E& set dateVar1=%%F& set yearVar1=%%G)
IF %monthVar% EQU Jan (SET monthVar1=01)
IF %monthVar% EQU Feb (SET monthVar1=02)
IF %monthVar% EQU Mar (SET monthVar1=03)
IF %monthVar% EQU Apr (SET monthVar1=04)
IF %monthVar% EQU May (SET monthVar1=05)
IF %monthVar% EQU Jun (SET monthVar1=06)
IF %monthVar% EQU Jul (SET monthVar1=07)
IF %monthVar% EQU Aug (SET monthVar1=08)
IF %monthVar% EQU Sep (SET monthVar1=09)
IF %monthVar% EQU Oct (SET monthVar1=10)
IF %monthVar% EQU Nov (SET monthVar1=11)
IF %monthVar% EQU Dec (SET monthVar1=12)
SET dateStamp1=%yearVar1%%monthVar1%%dateVar1%
SET /a dateStamp2=%dateStamp1%-1
SET dateStamp3=%dateStamp1:~4,4%
SET dateStamp4=%dateStamp2:~4,4%
SET /a yearVar2=%yearVar1% %% 4
IF "%dateStamp3%" EQU "0101" (SET /a yearVar2=%yearVar1%-1)
IF "%dateStamp3%" EQU "0101" (SET dateStamp2=%yearVar2%1231)
IF "%dateStamp3%" EQU "0101" (SET dateStamp4=1231)
IF "%dateStamp3%" EQU "0201" (SET dateStamp2=%yearVar1%0131)
IF "%dateStamp3%" EQU "0201" (SET dateStamp4=0131)
IF "%dateStamp3%" EQU "0301" (SET dateStamp2=%yearVar1%0228)
IF "%dateStamp3%" EQU "0301" (SET dateStamp4=0228)
IF "%dateStamp3%" EQU "0401" (SET dateStamp2=%yearVar1%0331)
IF "%dateStamp3%" EQU "0401" (SET dateStamp4=0331)
IF "%dateStamp3%" EQU "0501" (SET dateStamp2=%yearVar1%0430)
IF "%dateStamp3%" EQU "0501" (SET dateStamp4=0430)
IF "%dateStamp3%" EQU "0601" (SET dateStamp2=%yearVar1%0531)
IF "%dateStamp3%" EQU "0601" (SET dateStamp4=0531)
IF "%dateStamp3%" EQU "0801" (SET dateStamp2=%yearVar1%0631)
IF "%dateStamp3%" EQU "0801" (SET dateStamp4=0630)
IF "%dateStamp3%" EQU "0801" (SET dateStamp2=%yearVar1%0731)
IF "%dateStamp3%" EQU "0801" (SET dateStamp4=0731)
IF "%dateStamp3%" EQU "0901" (SET dateStamp2=%yearVar1%0831)
IF "%dateStamp3%" EQU "0901" (SET dateStamp4=0831)
IF "%dateStamp3%" EQU "1001" (SET dateStamp2=%yearVar1%0930)
IF "%dateStamp3%" EQU "1001" (SET dateStamp4=0930)
IF "%dateStamp3%" EQU "1101" (SET dateStamp2=%yearVar1%1031)
IF "%dateStamp3%" EQU "1101" (SET dateStamp4=1031)
IF "%dateStamp3%" EQU "1201" (SET dateStamp2=%yearVar1%1130)
IF "%dateStamp3%" EQU "1201" (SET dateStamp4=1130)
IF "%yearVar2%" EQU "0" (IF "%dateStamp3%" EQU "0301" (SET dateStamp2=%yearVar1%0229 & SET dateStamp4=0229))
SET dateStamp5=%yearVar1%%monthVar1%
SET /a dateStamp6=%yearVar1%%monthVar1%-1
SET dateStamp7=%dateStamp6:~0,6%%dateVar1%
Hello Thailand

ออฟไลน์ teentae

  • ****
  • 29
  • 0
  • เพศ: ชาย
Re: ขอ Batfile เปลี่ยนชื่อไฟล์โดยย้อนหลัง 1 วันครับ
« ตอบกลับ #5 เมื่อ: 21 พฤษภาคม 2014, 14:01:22 »

ขอบคุณมากๆครับ  :D :D
<b>กลุ่มผู้ดูแลระบบแห่งประเทศไทย ขอระงับการใช้ลายเซ็นต์รูปภาพ
อนุญาตให้ใช้ได้เพียง ลายเซ็นต์ที่เป็นข้อความ
จึงประกาศมาเพื่อขอความร่วมมือ จากสมาชิกทุกๆ ท่าน
ในนาม กลุ่มผู้ดูแลระบบแห่งประเทศไทย</b>