批处理命令问题

Cel*_*l-o 2 windows batch-file

我想制作一个批处理文件,指定为前一天的文件夹名称日期。我该怎么办?

这是我的批处理文件。

Set Tarih1=%date:.=%

d:\

cd \ Yeni Klasör

md %date:.=%

cd %date:.=%
Run Code Online (Sandbox Code Playgroud)

提前致谢。

use*_*686 8

可能,但是...

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%
Run Code Online (Sandbox Code Playgroud)

我建议使用功能更强大的编程语言 - PowerShell,可能是 Python 或 Perl。


电源外壳:

$yesterday=(get-date (get-date).AddDays(-1) -uformat %Y%m%d)
mkdir $yesterday
Run Code Online (Sandbox Code Playgroud)

Python:

import os
import time
yesterday = time.strftime("%Y%m%d", time.localtime(time.time() - 86400))
os.mkdir(yesterday)
Run Code Online (Sandbox Code Playgroud)

此外,在更改驱动器时,您必须仅使用驱动器号,而无需使用路径。d:\应该替换为d:... 或者只是使用cd /d D:\Yeni Klasör.

  • 我第二个 POwerShell。它在 Win 2003 及更高版本上可用,并在 XP 上运行! (3认同)