作者: 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 真係唔易明
作者: easytone 時間: 2019-2-18 17:04
Python
- import datetime, os
- today = datetime.datetime.now()
- dir = today.strftime("%Y%m%d")
- if 0 <= today.weekday() <= 4:
- if not os.path.exists(dir):
- 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
- @echo off
- setlocal
- 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 (
- set "dow=%%D"
- set "month=%%E"
- set "day=%%F"
- set "HH=%%G"
- set "MM=%%H"
- set "SS=%%I"
- set "year=%%J"
- )
- rem echo Day of the week: %dow%
- set bolCreate=false
- if [%dow%]=="Mon" set bolCreate=true
- if [%dow%]=="Tue" set bolCreate=true
- if [%dow%]=="Wed" set bolCreate=true
- if [%dow%]=="Thu" set bolCreate=true
- if [%dow%]=="Fri" set bolCreate=true
- if %bolCreate%=="false" (
- echo "Not Mon-Fri. Please check."
- pause;
- rem exit;
- )
- rem set the root path
- set V_PATH_SAV="C:\TEMP"
- rem get date in YYYYMMDD
- For /f "tokens=1-3 delims=/ " %%a in ('date /t') do ( set mydate=%%c%%b%%a)
- rem set the directory name
- set V_ResDir=%mydate%
- if not exist %V_PATH_SAV%\%V_ResDir% mkdir %V_PATH_SAV%\%V_ResDir%
- endlocal
至於玩到想唔改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
佢果度都有講既
"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
我寫果個只係 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
我寫C出生,完全唔覺得Powershell似C
作者: bongbong3481 時間: 2019-2-19 11:43
我見到下面段野,覺得有少少似for loop, for (i = 1; i <= n; ++i), 我只是學過少少c, 都是直覺覺得
for ($i=0;$i -le 364; $i++)
{
}
作者: KinChungE 時間: 2019-2-20 15:50
$i根本係PHP
作者: bongbong3481 時間: 2019-2-20 23:41
回覆 16# KinChungE
我本身唔識 PHP,只學過少少C/PASCAL/VBA,所以先覺得似C
作者: faiwaic 時間: 2019-2-21 09:11
但 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
我會直接CHECK係唔係2019年
年數係4o既倍數就有機會出錯
作者: kong3883 時間: 2019-2-23 05:32
本帖最後由 kong3883 於 2019-2-23 05:38 編輯
Windows 工作排程器 ?
如果用 Autohotkey... 只有 4 行
- FormatTime, w,, WDay
- FormatTime, TimeString,, yyyyMMdd
- if w between 2 and 6 ; 星期日是 1, 星期六是 7
- FileCreateDir, C:\Test\%TimeString%

