Board logo

标题: [問題]存取當天不指定的檔案 [打印本页]

作者: xmi     时间: 2008-2-22 01:35    标题: [問題]存取當天不指定的檔案
請教我想做一個bat檔如下: 1.先看d:\source\data\下有沒想到今天的檔(每天是不定的, 可能有, 可能沒有) 0214abc.abc.zip 0214ope.def.zip 2. 如有就在d:\source\source\開一個當天日期的folder 20080214.abc 20080214.def 3. unzip *.zip 到d:\source\source\它相對的檔案夾內. d:\source\source\20080214.abc\ d:\source\source\20080214.def\ 4. 然後ftp上一個server內 但兩個檔不可以同時ftp 上傳至server內, 要待一個完了(停1分鐘), 才開始上傳另一個. 請教要如何做到? :(

作者: fastslz     时间: 2008-2-22 10:39
@echo off
set aDate=%date:~0,-4%
set aDate=%aDate:-=%
dir /ad %adate:~4%abc.abc.zip&&md "d:\source\source\%adate%.abc"&unzip %adate:~4%abc.abc.zip&"d:\source\source\%adate%.abc"
dir /ad %adate:~4%ope.def.zip&&md "d:\source\source\%adate%.def"&unzip %adate:~4%ope.def.zip&"d:\source\source\%adate%.def"
ftp 自己搞定,关键词搜索或ftp /?

作者: xmi     时间: 2008-2-22 16:29
謝謝..我試試看.

作者: fastslz     时间: 2008-2-22 16:41
哦2楼代码失误了 dir /ad改成dir /a-d

作者: xmi     时间: 2008-2-22 20:53
fastslz兄, 我試了以下:
%date% @echo on set aDate=%date:~0,-4% set aDate=%aDate:-=% %adate:~4%abc.abc.zip @echo off dir /a-d %adate:~4%2f2.sam.tar&&md "d:\source\computer\%adate%.abc\" %adate:~4%abc.abc.zip&"d:\source\computer\%adate%.abc\" dir /a-d %adate:~4%ope.def.zip&&md "d:\source\computer\%adate%.def\" %adate:~4%ope.def.zip&"d:\source\computer\%adate%.def\" pause
但看似是date出了問題....
D:\source\Data>2008-02-22 星期五 '2008-02-22' 不是內部或外部命令、 可執行的程式或批次檔。 D:\source\Data>set aDate=2008-02-22 -----如何只取ddmm D:\source\Data>set aDate=20080222 D:\source\Data>0222abc.abc.zip '0222abc.abc.zip' 不是內部或外部命令、 可執行的程式或批次檔。 磁碟區 D 中的磁碟是 c40G BT download 磁碟區序號: BC17-106F D:\source\Data 的目錄 找不到檔案 '"d:\source\computer\20080222.abc\"' 不是內部或外部命令、
fastslz師兄,因在data內的檔是ddmm+xxx.aaa.zip (即2202a1e.sam.zip, 220255q.pet.zip, ... 15023eo.tuu.zip) ... 大至如: 今日是22022008, 即所有以ddmm=2202為名的都會有行動 copy和建夾於d:\source\computer\yyyymmdd.aaa\ d:\source\computer\20080222.sam\2202a1e.sam.zip d:\source\computer\20080222.pet\220255q.sam.zip 是這樣了.....

作者: fastslz     时间: 2008-2-22 21:23
以后测试代码加echo实际应用去掉echo
@echo off set aDate=%date:~0,-4% set aDate=%aDate:-=% echo dir /a-d %adate:~4%abc.abc.zip&&echo md "d:\source\source\%adate%.abc\"&echo unzip %adate:~4%abc.abc.zip "d:\source\source\%adate%.abc\" echo dir /a-d %adate:~4%ope.def.zip&&echo md "d:\source\source\%adate%.def\"&echo unzip %adate:~4%ope.def.zip "d:\source\source\%adate%.def\" pause
执行效果
dir /a-d 0222abc.abc.zip md "d:\source\source\20080222.abc\" unzip 0222abc.abc.zip "d:\source\source\20080222.abc\" dir /a-d 0222ope.def.zip md "d:\source\source\20080222.def\" unzip 0222ope.def.zip "d:\source\source\20080222.def\" 请按任意键继续. . .

作者: xmi     时间: 2008-2-22 22:38
它沒有在D:\source\source內建資料夾???

作者: fastslz     时间: 2008-2-22 23:03
Originally posted by xmi at 2008-2-22 22:38: 它沒有在D:\source\source內建資料夾???
怎么建自己搞定呀 unzip 我N年没用了

作者: xmi     时间: 2008-2-22 23:23
謝謝, 我終於成功建立folder了...只要把所有command分行就行和""除掉,很是奇怪, 為何你可以一行成功, 而我的就要分行? @echo off set aDate=%date:~0,-4% set aDate=%aDate:-=% echo dir /a-d %adate:~4%abc.abc.zip&&echo md d:\source\computer\%adate%.abc\ unzip %adate:~4%abc.abc.zip "d:\source\computer\%adate%.abc\" echo dir /a-d %adate:~4%39E.def.zip&&echo md d:\source\computer\%adate%.def\&&echo copy %adate:~4%ope.def.zip&&echo d:\source\computer\%adate%.def\&&echo pause 但為何日期永遠都是顯示0222,而不是2202? [ Last edited by xmi on 2008-2-22 at 11:25 PM ]

作者: fastslz     时间: 2008-2-22 23:46
『第 6 楼』: 以后测试代码加echo实际应用去掉echo 我不是说了吗要去掉echo(也就是6楼红色的要去掉) @off set aDate=%date:~0,-4% :::剔除当前时间后4位 set aDate=%aDate:-=% :::剔除aDate变量中的 - 符号 dir /a-d %adate:~4%abc.abc.zip&&md "d:\source\source\%adate%.abc\"&unzip %adate:~4%abc.abc.zip "d:\source\source\%adate%.abc\" :::用dir判断当前目录MMddabc.abc.zip,dir命令返回成功就建立d:\source\source\YYYYMMdd文件夹,并且unzip解压MMddabc.abc.zip到d:\source\source\YYYYMMdd dir /a-d %adate:~4%ope.def.zip&&md "d:\source\source\%adate%.def\"&unzip %adate:~4%ope.def.zip "d:\source\source\%adate%.def\" :::同上 pause [ Last edited by fastslz on 2008-2-22 at 11:49 PM ]

作者: fastslz     时间: 2008-2-23 00:18
www.cn-dos.net/forum/viewthrea ...
@echo off
regedit /e "%temp%\bak.reg" "HKEY_CURRENT_USER\Control Panel\International"
::::备份系统原时间日期格式
>aDate.reg echo REGEDIT4
>>aDate.reg echo.
>>aDate.reg echo [HKEY_CURRENT_USER\Control Panel\International]
>>aDate.reg echo "sShortDate"="yyyy-MM-dd"
>>aDate.reg echo "sDate"="-"
>>aDate.reg echo "sTimeFormat"="HH:mm:ss"
regedit /s aDate.reg&del aDate.reg
::::统一格式化系统日期格式

set 年=%aDate:~0,4%
set 月=%aDate:~5,2%
set 日=%aDate:~8,2%
echo %年% %月% %日%

regedit /s "%temp%\bak.reg"&del "%temp%\bak.reg"
::::还原系统原时间日期格式
pause
好了仁至义尽了 [ Last edited by fastslz on 2008-2-23 at 12:49 AM ]

作者: xmi     时间: 2008-2-23 00:34
fastslz十分謝.我太蠢了, 現在明白點了.但還要研究一下... many thanks