簡體   English   中英

在批處理文件的 for 循環中設置隨機變量值會產生錯誤

[英]Setting random variable value in for loop in batch file gives errors

這是我的代碼:

for %%i in ("joined/*.mp4") do (
  set /a result=(%random%*2/32768)+1
  echo %result%
)

它給了我關於+1 was unexpected at this time

我嘗試了另一種變體:

for %%i in ("joined/*.mp4") do (
  set /a result=(%random%*2/32768)
  echo %result%
)

它給了我一個關於不平衡括號的錯誤。

如何正確回顯隨機變量?

謝謝。 :)

嘗試以下代碼每次都會給我相同的隨機值。 如何在循環的每次迭代中更改它?

setlocal EnableDelayedExpansion
for %%i in ("joined/*.mp4") do (
  set /a result= %random%*20/32768 + 1
  echo !result!
)

有沒有我可以閱讀的資源來詳細了解批處理文件的工作原理以及它們的語言,如循環、arrays 等? 我嘗試在 Google 上搜索,但沒有找到任何有用的信息。

正如@Stephan 提供的鏈接中所解釋的那樣,您將需要。 也是隨機的。

您可以這樣做(出於某種原因, (!random!*20)/32768 triggers "/32768" was unexepected ,因此您必須將其拆分為兩行:

setlocal EnableDelayedExpansion
    for %%i in ("joined/*.mp4") do (
        set /a result = !random!*20
        set /a result= !result!/32768 +1
        echo !result!
    )

使用方括號(括號)非常好,我會說更正確,所以你沒有理由不能繼續這樣做。

為您提供一些選項,它們可以保持它們的使用:

@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion
For %%G In ("joined\*.mp4") Do (
    Set /A result = (!random! * 20 / 32768^) + 1
    Echo !result!
)
Pause
@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion
For %%G In ("joined\*.mp4") Do (
    Set /A "result = (!random! * 20 / 32768) + 1"
    Echo !result!
)
Pause
@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion
For %%G In ("joined\*.mp4") Do (
    Set /A result = (!random! %% 20^) + 1
    Echo !result!
)
Pause
@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion
For %%G In ("joined\*.mp4") Do (
    Set /A "result = (!random! %% 20) + 1"
    Echo !result!
)
Pause

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM