Board logo

標題: [操作疑難] 求救.寫一個AUTO CREATE FOLDER 既BATCH.. [打印本頁]

作者: aj_son    時間: 2019-2-18 14:26     標題: 求救.寫一個AUTO CREATE FOLDER 既BATCH..

有冇高手 用POWERSHELL/CMD
寫一個BATCH 係FOR WINDOWS  根據2019 年每天Monday 到Friday
自動 CREATE一個 Folder
For Example,
Folder Name = 20190218 , 20190219 ,20190220 .....
只要星期一至星期五..
下星期就自動跳去20190225 , 20190226
如此類推。
求高手指引.
作者: bongbong3481    時間: 2019-2-18 15:07

回覆 1# aj_son


我用VBS  根據DATE 去CREATE FOLDER,因為開機先create (星期一至五番工)),所以沒根據星期一至五去CREATE, 如果你都可以用VBS , 我可以比你睇下
作者: pchai    時間: 2019-2-18 15:19

powershell 真係好肉酸
for ($i=0;$i -le 364; $i++)
{
    if ((get-date "2019-1-1").AddDays($i).dayofweek.value__ -le 5)
    {
        mkdir C:\temp\ps1\$((get-date "2019-1-1").AddDays($i).ToString("yyyyMMdd"))
    }
}
作者: bongbong3481    時間: 2019-2-18 17:02

回覆 3# pchai


其實powershell 真係唔易明,有少少寫C 既 code 咁 ,不過powershell D CODE真係好少,我用 vbs / vba 好似寫唔出咁少行數
作者: easytone    時間: 2019-2-18 17:04

Python
  1. import datetime, os

  2. today = datetime.datetime.now()
  3. dir = today.strftime("%Y%m%d")

  4. if 0 <= today.weekday() <= 4:
  5.         if not os.path.exists(dir):
  6.                 os.mkdir(dir)
複製代碼

作者: faiwaic    時間: 2019-2-18 17:40

本帖最後由 faiwaic 於 2019-2-18 17:45 編輯

其實 .bat 檔都唔難搵...
Stack 都有相關:
https://stackoverflow.com/questi ... the-day-of-the-week
  1. @echo off
  2. setlocal
  3. for /f "skip=8 tokens=2,3,4,5,6,7,8 delims=: " %%D in ('robocopy /l * \ \ /ns /nc /ndl /nfl /np /njh /XF * /XD *') do (
  4. set "dow=%%D"
  5. set "month=%%E"
  6. set "day=%%F"
  7. set "HH=%%G"
  8. set "MM=%%H"
  9. set "SS=%%I"
  10. set "year=%%J"
  11. )

  12. rem echo Day of the week: %dow%
  13. set bolCreate=false
  14. if [%dow%]=="Mon" set bolCreate=true
  15. if [%dow%]=="Tue" set bolCreate=true
  16. if [%dow%]=="Wed" set bolCreate=true
  17. if [%dow%]=="Thu" set bolCreate=true
  18. if [%dow%]=="Fri" set bolCreate=true
  19. if %bolCreate%=="false" (
  20.         echo "Not Mon-Fri. Please check."
  21.         pause;
  22.         rem exit;
  23. )
  24. rem set the root path
  25. set V_PATH_SAV="C:\TEMP"
  26. rem get date in YYYYMMDD
  27. For /f "tokens=1-3 delims=/ " %%a in ('date /t') do ( set mydate=%%c%%b%%a)
  28. rem set the directory name
  29. set V_ResDir=%mydate%
  30. if not exist %V_PATH_SAV%\%V_ResDir% mkdir %V_PATH_SAV%\%V_ResDir%
  31. endlocal
複製代碼
記得自己改 save 係邊 "V_PATH_SAV"
至於玩到想唔改code 改 path 而 read ini, 就自己搵啦, 唔再深入幫你打工.
作者: pchai    時間: 2019-2-18 17:57

powershell 真係好肉酸
for ($i=0;$i -le 364; $i++)
{
    if ((get-date "2019-1-1").AddDays($i).dayofw ...
pchai 發表於 2019-2-18 15:19


PS 個問題係好似醉酒佬寫code咁, 無lala 做乜 __
C 好太多
作者: pchai    時間: 2019-2-18 17:59

其實 .bat 檔都唔難搵...
Stack 都有相關:
記得自己改 save 係邊 "V_PATH_SAV"
至於玩到想唔改code 改 pa ...
faiwaic 發表於 2019-2-18 17:40



用bat最麻煩係個locate問題. 轉用中文windows即時錯晒
作者: bongbong3481    時間: 2019-2-18 18:09

回覆 8# pchai


我都發覺有呢個問題, 唔同版本的WINDOW,BATCH 整出黎既DATE都唔同
作者: faiwaic    時間: 2019-2-18 18:26

用bat最麻煩係個locate問題. 轉用中文windows即時錯晒
pchai 發表於 2019-2-18 17:59



佢果度都有講既
    "Also might depend on localization:"
睇 user 用咩 env 囉... 起碼呢隻最盡支持到 XP, 2003~
唔係既都係 powershell / python 比較好, 雖然快~
而且 control panel set 好晒, 問題應該唔大....

用 bat 好處係 唔洗裝野就用得, 又唔洗怕比人賴你佔用 .net framework resources (powershell) / 裝多舊野 (python) ~
作者: aj_son    時間: 2019-2-18 18:48

其實 .bat 檔都唔難搵...
Stack 都有相關:
記得自己改 save 係邊 "V_PATH_SAV"
至於玩到想唔改code 改 pa ...
faiwaic 發表於 2019-2-18 17:40


感謝大大無私的提點!!
作者: faiwaic    時間: 2019-2-19 09:04

感謝大大無私的提點!!
aj_son 發表於 2019-2-18 18:48



    我寫果個只係 get current date 去 create folder~
定係你想年頭 gen 晒成年?
作者: 燒浩    時間: 2019-2-19 09:19

回覆 4# bongbong3481


如寫慣 C 風格語言應該唔難明。(不過我唔鍾意佢用 -eq, -le, -gt...等,而唔用符號)


個人喜歡用 bat,不過好多時都要靠 vbs 調用 wsh 或其他功能(最大好處理係唔駛安裝,Copy and Paste 就到處可用)。 最唔鍾意 PowerShell 係第一下開好慢,要等。
作者: pchai    時間: 2019-2-19 10:51

回覆  bongbong3481


如寫慣 C 風格語言應該唔難明。(不過我唔鍾意佢用 -eq, -le, -gt...等,而唔用符號 ...
燒浩 發表於 2019-2-19 09:19


我寫C出生,完全唔覺得Powershell似C
作者: bongbong3481    時間: 2019-2-19 11:43

我寫C出生,完全唔覺得Powershell似C
pchai 發表於 2019-2-19 10:51


我見到下面段野,覺得有少少似for loop, for (i = 1; i <= n; ++i), 我只是學過少少c,  都是直覺覺得

for ($i=0;$i -le 364; $i++)
{
}
作者: KinChungE    時間: 2019-2-20 15:50

我見到下面段野,覺得有少少似for loop, for (i = 1; i
bongbong3481 發表於 2019-2-19 11:43


$i根本係PHP
作者: bongbong3481    時間: 2019-2-20 23:41

回覆 16# KinChungE


    我本身唔識 PHP,只學過少少C/PASCAL/VBA,所以先覺得似C
作者: faiwaic    時間: 2019-2-21 09:11

$i根本係PHP
KinChungE 發表於 2019-2-20 15:50



    但 C 係舊過 PHP
作者: xader    時間: 2019-2-22 12:52

powershell 真係好肉酸
for ($i=0;$i -le 364; $i++)
{
    if ((get-date "2019-1-1").AddDays($i).dayofw ...
pchai 發表於 2019-2-18 15:19


可能師兄唔熟 D high level 野

其實可以咁寫
0..364|%{
   if ((Get-Date "2019-1-1").AddDays($_).dayofWeek -le 5){
      mkdir C:\temp\ps1\$((get-date "2019-1-1").AddDays($_).ToString("yyyyMMdd")) -WhatIf
      }
}
作者: a2462    時間: 2019-2-22 14:50

我見到下面段野,覺得有少少似for loop, for (i = 1; i
bongbong3481 發表於 2019-2-19 11:43



    我會直接CHECK係唔係2019年
年數係4o既倍數就有機會出錯
作者: kong3883    時間: 2019-2-23 05:32

本帖最後由 kong3883 於 2019-2-23 05:38 編輯

Windows 工作排程器 ?

如果用 Autohotkey... 只有 4 行
  1. FormatTime, w,, WDay
  2. FormatTime, TimeString,, yyyyMMdd

  3. if w between 2 and 6 ; 星期日是 1, 星期六是 7
  4.     FileCreateDir, C:\Test\%TimeString%
複製代碼





歡迎光臨 電腦領域 HKEPC Hardware (https://h2.hkepc.com/forum/) Powered by Discuz! 7.2