条件成功我试图将日期分成" /"以下代码正在运行,但是当我将其保持在if条件下时,这会失败。
set date_only=%dateparam:*dt= =%
echo %date_only%
REM above line prevents unexpected results when input string has less than two /
set mm=%date_only:*/=%
echo !mm!
set yyyy=%mm:*/=%
echo !yyyy!
set dd=!date_only:/%mm%=!
echo !dd!
set dd=!dd:~3,2!
echo !dd!
set mm=!mm:/%yyyy%=!
echo !mm!
set yyyy=!yyyy:~0,4!
echo.%dd%
echo.%mm%
echo.%yyyy%
如果条件如上所述,则变为以下
if "%isDateFound%" == "true" (
echo %isDateFound%
set date_only=%dateparam:*dt= =%
echo !date_only!
set mm=!!date_only:*/=!
echo month
echo !mm!
set yyyy=!!mm:*/=!
echo year
echo !yyyy!
set dd=!!date_only:/!mm!=!!
echo date
echo !dd!
set dd=!dd:~3,2!
set mm=!!mm:/%yyyy%=!
set yyyy=!yyyy:~0,4!
echo !dd!
echo !mm!
echo !yyyy!
)
因为delayedexpression看起来像set dd = !! date_only:/!mm!= !!不工作。如何在if条件中引用变量。
如果有更好的方法来获得dd mm yyyy?
感谢。
答案 0 :(得分:1)
尝试这样:
@echo off
set hour=%time:~0,2%
if "%hour:~0,1%" == " " set hour=0%hour:~1,1%
echo hour=%hour%
set min=%time:~3,2%
if "%min:~0,1%" == " " set min=0%min:~1,1%
echo min=%min%
set secs=%time:~6,2%
if "%secs:~0,1%" == " " set secs=0%secs:~1,1%
echo secs=%secs%
set year=%date:~-4%
echo year=%year%
set month=%date:~3,2%
if "%month:~0,1%" == " " set month=0%month:~1,1%
echo month=%month%
set day=%date:~0,2%
if "%day:~0,1%" == " " set day=0%day:~1,1%
echo day=%day%
Set MaDate=%day%/%month%/%year%
Set MyTime=%hour%:%min%:%secs%
echo %MaDate%
echo %MyTime%
set DateTimeFile=%year%_%month%_%day%_%hour%_%min%_%secs%.log
echo DateTimeFile=%DateTimeFile%
pause
或者我从 foxidrive 获得了另一个解决方案:
::From foxidrive
@echo off
for /f "delims=" %%a in ('wmic OS Get localdatetime ^| find "."') do set dt=%%a
set datestamp=%dt:~0,8%
set timestamp=%dt:~8,6%
set YYYY=%dt:~0,4%
set MM=%dt:~4,2%
set DD=%dt:~6,2%
set HH=%dt:~8,2%
set Min=%dt:~10,2%
set Sec=%dt:~12,2%
set stamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec%
echo stamp: "%stamp%"
echo datestamp: "%datestamp%"
echo timestamp: "%timestamp%"
pause
答案 1 :(得分:1)
你有不描述%date_only%
变量的格式是什么,所以我假设它是DD / MM / YYYY。这应该有效:
if "%isDateFound%" == "true" (
echo %isDateFound%
set date_only=%dateparam:*dt= =%
echo !date_only!
for /F "tokens=1-3 delims=/" %%a in ("!date_only!") do (
set "dd=%%a"
set "mm=%%b"
set "yyyy=%%c"
)
echo !dd!
echo !mm!
echo !yyyy!
)
如果您的问题中存在此代码未涵盖的问题,请描述!
答案 2 :(得分:1)
更好的方法是使用if (csvdata.length > 0)
{
csvdata = JSON.parse( csvdata ); //parse it into JSON by doing JSON.parse
console.log('Current CSV data Information: \n');
console.log(csvdata);
for (var j = 0; j < csvdata.length; j++)
{
console.log(csvdata[j].Name);
}
}
:
这是一种更好的方法:
WMIC
自动添加月和日之前的前导0。
答案 3 :(得分:0)
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "dateparm=run_dt=1/3/2015"
SET "isdatefound=true"
IF "%isdatefound%"=="true" (
FOR /f "tokens=2,3,4delims==/" %%a IN ("%dateparm%") DO (
SET /a dd=100+%%a
SET /a mm=100+%%b
SET /a yyyy=%%c
)
SET "dd=!dd:~-2!"
SET "mm=!mm:~-2!"
SET "ddmmyyyy=!dd!!mm!!yyyy!"
REM echos to prove
ECHO day dd=!dd!
ECHO month mm=!mm!
ECHO year yyyy=!yyyy!
ECHO concat ddmmyyyy=!ddmmyyyy!
)
GOTO :EOF
很难判断您的格式是dd / mm / yyyy还是mm / dd / yyyy。字符run_dt=1/3/2015
似乎包含在dateparm
。
所以 - 如果条件为真,则使用=
和/
作为分隔符来标记字符串,使用分配给%%a
的标记2,3和4以及隐式%%b
和%%c
。
每月和每天添加100。然后取每个的最后2个字符。使用!var!
因为我们需要变量的运行时值。
将变量连接到ddmmyyyy
,然后显示结果。
当然,如果您要使用dd
格式,则需要切换mm
和mm/dd/yyyy
。