问题一:- set /p "url=url:"
- for /f "tokens=1,2,3,5 delims=/?=&" %%i in ("%url%") do (set "a=%%l")
- rem 我拿到这个参数 a 通过一条命令生成了一个 a.txt
- <这里具体的命令就不写了 调用外部的工具 大佬能看懂就好了> %a% > a.txt
- rem 然后我拿到这个命令生成的 txt文件 生成另外一个批处理
- for /f "delims=" %%i in (a.txt) do echo %a% %%i>> 1.bat
- rem 想省去以下三步,让他直接 执行 for里面的 输出的 内容。
- call 1.bat
- del /f /q a.txt
- del /f /q 1.bat
复制代码 最后我想问, 能不能优化一下这个过程, 这个 参数a 通过命令生成的 a.txt 能不能用某个东西来代替,不让他生成 a.txt
用一个东西来代替这个"a.txt"中转 。 上文中提到的"a.txt"就是一个中转的作用。
实际我生成1.bat ,还是要 再 del 这个 a.txt 感觉这样写很不优雅
另外 1.bat 能不能也不生成,直接可以执行 for 里面输出的内容吗。
问题二:- rem 这里set的文件是接上面输出的 1.bat 文件 想要合二为一
-
- set File=1.bat
-
- for /f "tokens=1 delims=:" %%a in ('findstr /n "^::CreatUrlEncode::$" "%~0"') do more +%%a "%~0">UrlEncode.vbs
-
- (for /f "delims=" %%a in ('type "%File%"') do (
- for /f "delims=" %%i in ('cscript /nologo UrlEncode.vbs "%%~a"') do echo %%~i
- ))>New$
- move /y New$ "%File%" >nul
- del /f /q UrlEncode.vbs
- goto next
-
- ::CreatUrlEncode::
- 'UrlEncode By Demon
-
- Function UrlEncode(str)
- Dim i,c,s,length
- length = Len(str)
- For i = 1 To length
- s = Mid(str,i,1)
- c = "&H" & Hex(AscW(Mid(str,i,1)))
- If ( c >= AscW("A") And c <= AscW("Z") ) Or _
- ( c >= AscW("a") And c <= AscW("z") ) Or _
- ( c >= AscW("0") And c <= AscW("9") ) Or _
- ( c = AscW("-") Or c = AscW("_") Or c = AscW(".") ) Or _
- ( c = Asc(":") Or c = Asc("/") ) Then
- UrlEncode = UrlEncode & s
- ElseIf c = AscW(" ") Then
- UrlEncode = UrlEncode & "+"
- Else
- If c >= &H0001 And c <= &H007F Then
- UrlEncode = UrlEncode & s
- ElseIf c > &H07FF Then
- UrlEncode = UrlEncode & "%%" & Hex(&HE0 Or (c\(2^12) And &H0F))
- UrlEncode = UrlEncode & "%%" & Hex(&H80 Or (c\(2^6) And &H3F))
- UrlEncode = UrlEncode & "%%" & Hex(&H80 Or (c\(2^0) And &H3F))
- Else
- UrlEncode = UrlEncode & "%%" & Hex(&HC0 Or (c\(2^6) And &H1F))
- UrlEncode = UrlEncode & "%%" & Hex(&H80 Or (c\(2^0) And &H3F))
- End If
- End If
- Next
- End Function
-
- WScript.Echo UrlEncode(WScript.Arguments(0))
复制代码 这个是url 转码批处理。 我想直接丢到 自己写的批处理里面去用(合二为一)
但是不管用 goto 来执行都报错。必须要丢到外部 用call 来调用这个bat 才可以。
这个url 转码批处理,能不能改改, 可以结合上面那个命令用
-----
谢谢大佬 |