2017-08-16 94 views
1

以下代碼行是較大腳本的一部分。儘管這是運行時創建問題的特定部分。在初始提示和用戶輸入後,腳本發生錯誤,提供錯誤: unexpected at this time。看完我的代碼和一些在線文檔後,看起來好像我所做的每件事都應該是正確的。雖然我確信我錯過了導致這種情況發生的小事。批處理文件「:此時意外」

::Changes Date/Time 
echo The current date and time is %date% %time% 
SET /P TIMECHANGE=Would you like to change the time (y:Yes): 

if /i "%TIMECHANGE%" == "y" (
    SET /P POSTIME=Please enter new time (HH:MM:SS): 
    time "%POSTIME%" 
) 

SET /P DATECHANGE=Would you like to change the date (y:Yes): 

if /i "%DATECHANGE%" == "y" (
    SET /P POSDATE=Please enter new date (MM-DD-YYYY): 
    date "%POSDATE%" 
) 

tzutil /s "Eastern Standard Time" 

編輯:
通過一些更閒逛我發現,問題就行了存在的:

if /i "%TIMECHANGE%" == "y" (
+0

哪條特定行? – jmoon

+0

只是跑了一個測試,它是在線: 如果/我「%TIMECHANGE%」==「Y」( – TGutmann87

+1

我懷疑問題可能是這個代碼本身被封閉作爲代碼塊的一部分,其中用作'set'語句一部分的'''將關閉括號級別。嘗試用'^)替換set中的'''' – Magoo

回答

0

的問題是由SET /P線與(...):文本引起的。使用引號如下,它將起作用SET /P "VAR=TEXT:"

SET /P "TIMECHANGE=Would you like to change the time (y:Yes):" 

SET /P "POSTIME=Please enter new time (HH:MM:SS):" 

SET /P "DATECHANGE=Would you like to change the date (y:Yes):" 

SET /P "POSDATE=Please enter new date (MM-DD-YYYY):" 
1

見SO delayedexpansion項(有很多)對於爲什麼set解釋創建一個變量並在代碼塊(括號中的行序列)內使用新值不會改變該值。

這裏簡單的解決方法就是不過來移動if報表之外timedate -setting線,如

set "postime=%time%" 
if /i "%TIMECHANGE%" == "y" (
    SET /P POSTIME=Please enter new time (HH:MM:SS): 
) 
time "%POSTIME%" 
+0

這直接發生在if語句中,我甚至無法到達設置%POSTIME% – TGutmann87