Cri*_*scu 21 windows bash environment-variables
我正在尝试从批处理脚本创建一个 zip 文件。我需要将它命名为 archive_.zip
不幸的是,由于斜线,这不适用于日期格式为 y/m/d 的系统:
zip some_options "archive_%DATE%.zip"
Run Code Online (Sandbox Code Playgroud)
该%DATE%变量扩展到像
Mon 09/28/2009
Run Code Online (Sandbox Code Playgroud)
我可以访问 gnuwin32 包,所以我可以使用,比如,sed用破折号替换空格和斜线。问题是,我将如何使用 的输出sed来创建 zip 存档的文件名?
在 Unix (bash) 中,可以使用反引号来就地评估命令并在另一个命令中使用其输出,例如:
zip [...] archive_`echo %DATE% | sed -e s/.../.../`.zip
Run Code Online (Sandbox Code Playgroud)
Windows 中有类似的东西吗?
或者也许有一种方法可以将变量设置为的返回值sed并使用它来构造文件名?
Chr*_*her 32
您可以使用以下方法替换变量中的符号:
set _date=%DATE:/=-%
Run Code Online (Sandbox Code Playgroud)
我已经发布了一个答案,一个非常类似的问题在这里。字段中日期的拆分是在 1 行中完成的,而不是在 harrymc 的答案中的几行中完成。
有趣的部分是:
@echo off
for /F "tokens=2-4 delims=/ " %%i in ('date /t') do set yyyymmdd=%%k%%j%%i
echo Date: %yyyymmdd%
Run Code Online (Sandbox Code Playgroud)
警告仍然相关:
警告:日期格式 (yyyymmdd=%%k%%j%%i) 取决于您的区域设置。因为我使用的是法语日期格式(dd/mm/yyyy),所以我必须使用“%%k%%j%%i”作为格式(%%i = 日,%%j = 月,%%j =年)。
如果您的区域设置设置为美国样式 (mm/dd/yyyy),您应该使用“%%k%%i%%j”(%%i = 月,%%j = 日,%%j = 年) .
我总是使用:
For /f "tokens=1,2,3,4,5 delims=/. " %%a in ('date/T') do set CDate=%%a%%b%%c%%d
Run Code Online (Sandbox Code Playgroud)
然后 CDate 将是 Sat02182012。如果你想让它更易于排序,将 CDate 设置为 %%d-%%b-%%c 所以它将是 2012-02-18
For /f "tokens=1,2 delims=:" %%f in ('time /t') do set CTime=%%f%%g
Run Code Online (Sandbox Code Playgroud)
使日期和时间文件夹/文件友好。
| 归档时间: |
|
| 查看次数: |
103481 次 |
| 最近记录: |