如何解决在批处理脚本的变量内部传递for参数
def grayToBinary(g,li):
b = [0]*li
b[0] = g[0]
for i in range(1,li):
b[i] = b[i-1] ^ g[i]
return b
gray = [0,1,1]
binary = grayToBinary(gray,len(gray))
print("Gray Code =",gray,"Binary =",binary)
在我的批处理文件中不起作用,帮助
我需要的是cmd首先解析“ %% 1”为1、2或其他值;然后解析Gray Code = [0,1] Binary = [0,0]
。
............................................... ......................
我认为这是一个更大的问题,“变量内部有变量”,因为这也不起作用:
set vid1=asd
set vid2=fgh
for /L %%1 in (1,2) do (echo %vid%%1%)
pause
解决方法
我应该使用delayedexpansion
:
setlocal EnableDelayedExpansion
set vid1=asd
set vid2=qwe
for /L %%i in (1,1,3) do (echo !vid%%i!)
pause
也可以不使用delayedexpansion
:
for /L %%1 in (1,%count%) do (call :yt "%%vid%%1%%" %%1)
pause
exit
:yt
echo video %2
"C:\[path]\youtube-dl.exe" [youtube-dl arguments] %1
echo.
goto:eof
完整的脚本(它膨胀了,因为我正在尝试是否可以做一些事情):
@echo off
set count=0
:beh
set /a count+=1
set /p vid%count%=vid%count%:
if not defined vid%count% (
set /a count-=1
goto next
) else (
if %count%==1 (echo %count% vid) else (echo %count% vids)
goto beh)
pause
:next
echo %count% videos
pause >nul
choice /m "x?"
IF %ERRORLEVEL% EQU 1 (set x=-x)
echo press enter to run ytdl
pause >nul
echo initiating
echo.
@cd %homepath%/desktop
for /L %%1 in (1,%count%) do (call :yt "%%vid%%1%%" %%1)
pause
exit
:yt
echo video %2
"C:\[path]\youtube-dl.exe" %x% --no-check-certificate -w --console-title -i --no-mark-watched -o ".\%%(title)s.%%(ext)s" --prefer-ffmpeg --ffmpeg-location "C:\[ffmpeg path]" %1
echo.
goto:eof
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。