2017-05-25 71 views
1

有很多關於如何使用批處理文件語法獲取日期的半工作示例示例,但它們通常過於冗長或難以理解。由於我可以保證機器運行的是Python,我希望能夠利用Python以一種很好的用戶友好格式獲取日期,並將輸出寫入bat文件變量。將Python日期寫入bat文件變量

這是我的嘗試:

FOR /F "tokens=* USEBACKQ" %%F IN (`python -c "import datetime 
datetime.datetime.now().replace(microsecond=0).isoformat()"`) DO (
SET var=%%F 
) 
ECHO %var% 

可惜,這是行不通的。我得到這個錯誤:

.replace(microsecond was unexpected at this time.

我不知道如果我失去了某種格式的,但搜索關於此錯誤的產量沒有照明。任何幫助表示讚賞。

+0

@HFBro wning似乎與我無關。 –

+3

難道是你錯過了';'來分隔Python語句?:'import datetime; datetime.datetime.now()。replace(微秒= 0).isoformat()' –

+0

分號後' import' –

回答

3

試試這個(雖然你沒有指定的Python版本):

FOR /F "tokens=* USEBACKQ" %%F IN (
    `python -c "import datetime; print datetime.datetime.now().replace(microsecond=0).isoformat();"` 
) DO (
    SET var=%%F 
) 

echo %var% 

你需要打印功能(否則就不會有輸出由批處理文件來處理)

對於更復雜的代碼,我會建議你通過siberia-man,讓你把Python和批號在一個文件中的新線路等使用的「嵌合體」技術:

0<0# :^
''' 
@echo off 

for /f "tokens=* delims=" %%a in ('python "%~f0" %*') do (
    set "var=%%a" 
) 
echo %var% 
exit /b 0 

:::: PYTHON CODE GOES HERE ::::: 
''' 

import datetime; 

print datetime.datetime.now().replace(microsecond=0).isoformat();