我想创建一个批处理文件,将文件夹名称的日期指定为前一天。我该怎么做?
这是我的批处理文件。
Set Tarih1=%date:.=%
d:\
cd \ Yeni Klasör
md %date:.=%
cd %date:.=%
提前致谢。
答案1
它是可能的, 但...
setlocal
set _today=%date:.=%
set _year=%_today:~0,4%
set _month=%_today:~4,2%
set _day=%_today:~6,2%
:: leap year?
set /a _yearm400=_year %% 400
set /a _yearm100=_year %% 100
set /a _yearm4=_year %% 4
if %_yearm400% equ 0 (set _leap=1) ^
else (if %_yearm100% equ 0 (set _leap=0) ^
else (if %_yearm4% equ 0 (set _leap=1) ^
else (set _leap=0)))
:: strip leading zeros
if %_month:~0,1% equ 0 set _month=%_month:~1%
if %_day:~0,1% equ 0 set _day=%_day:~1%
:: decrement day
set /a _day-=1
:: decrement month
if %_day% equ 0 (
if %_month% equ 2 set _day=31
if %_month% equ 3 set /a _day=28+_leap
if %_month% equ 4 set _day=31
if %_month% equ 5 set _day=30
if %_month% equ 6 set _day=31
if %_month% equ 7 set _day=30
if %_month% equ 8 set _day=31
if %_month% equ 9 set _day=31
if %_month% equ 10 set _day=30
if %_month% equ 11 set _day=31
if %_month% equ 12 set _day=30
if %_month% equ 1 set _day=31
set /a _month-=1
)
:: decrement year
if %_month% equ 0 (
set /a _year-=1
set _month=12
)
:: format new date
if %_month% leq 9 set _month=0%_month%
if %_day% leq 9 set _day=0%_day%
echo %_year%%_month%%_day%
我建议使用功能更强大的编程语言 -电源外壳,可能是 Python 或者 Perl。
电源外壳:
$yesterday=(get-date (get-date).AddDays(-1) -uformat %Y%m%d)
mkdir $yesterday
Python:
import os
import time
yesterday = time.strftime("%Y%m%d", time.localtime(time.time() - 86400))
os.mkdir(yesterday)
此外,更改驱动器时,您必须仅使用驱动器号,而不使用路径。d:\
应该替换为d:
...或者直接使用cd /d D:\Yeni Klasör
。
答案2
如果你真的不想(或不能)使用 Powershell,那么你可以调用 .vbs(VBScript 文件)
文件 CreateYesterdayFolder.vbs
' yyyymmdd.vbs - outputs the current date in the format yyyymmdd
Function Pad(Value, PadCharacter, Length)
Pad = Right(String(Length,PadCharacter) & Value, Length)
End Function
Dim yesterday, folderName
yesterday = Date() - 1
folderName = Pad(Year(yesterday), "0", 4) & Pad(Month(yesterday), "0", 2) & Pad(Day(yesterday), "0", 2)
Dim objFSO, objFolder, strDirectory
newDirPath = "c:\temp\" & folderName ' example
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = objFSO.CreateFolder(newDirPath)
在批处理文件中按如下方式调用:
cscript CreateYesterdayFolder.vbs //NOLOGO