Board logo

标题: [系统相关] [已解决]如何将当前批处理变量的值,传递到通过more命令生成的bat文件里面?谢谢 [打印本页]

作者: ygqiang    时间: 2015-12-2 20:19     标题: [已解决]如何将当前批处理变量的值,传递到通过more命令生成的bat文件里面?谢谢

本帖最后由 ygqiang 于 2015-12-4 10:53 编辑

[已解决]bat批处理命令,如何将当前变量的值,传递到新生成的bat文件里面?谢谢
  1. @echo off
  2. ------------------------------------------------------------------------------------
  3. for /f "tokens=15 delims= " %%i in ('ipconfig ^| find /i "IP Address"') do set i=%%i
  4. for /f "tokens=1,2,3 delims=." %%i in ("%i%") do (set a=%%i.%%j.%%k)
  5. echo %a%
  6. set ipp=10
  7. ------------------------------------------------
  8. if "%a%" == "192.168.9"   goto :next9
  9. goto :next
  10. ------------------------------
  11. :next9
  12. set ipp=20
  13. ------------------------------
  14. :next
  15. echo %ipp%
  16. echo 如何将这里的ipp变量值,传送到zcom.bat文件里面?
  17. ------------------------------------------------------------------------------------
  18. for /f "delims=:" %%i in ('findstr /n "^:zcom-copy$" "%~f0"') do (
  19.     more +%%i "%~f0" > c:\zcom.bat
  20. )
  21. copy /y c:\zcom.bat "%userprofile%\「开始」菜单\程序\启动"
  22. ping 127.0.0.1 -n 5 >nul 2>nul
  23. exit
  24. ——————————————————————————————————————————————
  25. :zcom-copy
  26. @echo off
  27. if "%1" == "h" goto begin
  28. mshta vbscript:createobject("wscript.shell").run("%~fs0 h",0)(window.close)&&exit
  29. :begin
  30. rem 下边开始写批处代码了
  31. ping 127.0.0.1 -n %ipp% >nul 2>nul
  32. echo 如何将最开始的ipp变量值,传送到这里来?
  33. 。。。。其他bat代码。。。。
复制代码
更新下:——————————————————————————

bat代码,实现的功能就是:
1、判断ip地址段,如果是192.168.9,ipp变量赋值20;否则ipp变量赋值10
2、bat代码自动生成bat文件c:\zcom.bat,并且复制到"%userprofile%\「开始」菜单\程序\启动"目录下。
3、倒计时5秒自动退出bat代码。
4、zcom.bat文件内容如下:
@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~fs0 h",0)(window.close)&&exit
:begin
rem 下边开始写批处代码了
ping 127.0.0.1 -n %ipp% >nul 2>nul
作者: bbaa    时间: 2015-12-2 21:52

可以把其他bat代码的%ipp%变成%~1
在之前的代码用
bat文件名 %ipp%
来启动其他bat
作者: ygqiang    时间: 2015-12-2 22:18

本帖最后由 ygqiang 于 2015-12-2 22:19 编辑
可以把其他bat代码的%ipp%变成%~1
在之前的代码用
bat文件名 %ipp%
来启动其他bat
bbaa 发表于 2015-12-2 21:52



    你好。如何在1楼bat代码基础上修改?谢谢

要求:不能改变1楼这个bat代码的基本功能,自动生成/运行另一个bat文件。
作者: bbaa    时间: 2015-12-2 22:30

没注意有个 if %1......
作者: ygqiang    时间: 2015-12-2 22:50

本帖最后由 pcl_test 于 2015-12-3 00:45 编辑

回复 4# bbaa


   
    不能解决吗?谢谢
作者: pcl_test    时间: 2015-12-2 23:21

本帖最后由 pcl_test 于 2015-12-3 00:19 编辑
  1. /*&cls
  2. @echo off
  3. set test=测试
  4. for /l %%a in (1 1 5) do set /a n+=%%a
  5. echo;-----------------------------------------------------------------
  6. (for /f "delims=:" %%囧 in ('findstr /n "^:ExtraCodes$" "%~f0"') do (
  7.     rem 调用js"传参" %test%和%n%
  8.     more +%%囧 "%~f0"|cscript -nologo -e:jscript "%~f0" "%%test%%|%test%" "%%n%%|%n%"
  9. ))>"生成.bat"
  10. exit
  11. */
  12. var battxt = WScript.StdIn.ReadAll();
  13. for(var i=0; i<WScript.Arguments.length; i++)
  14. {
  15.     var tmp = WScript.Arguments(i).split('|');
  16.     var reg = RegExp(tmp[0],'g');
  17.     battxt = battxt.replace(reg, tmp[1]);
  18. }
  19. WSH.echo(battxt);
  20. /*
  21. ----------------------------------------------------------------------
  22. :ExtraCodes
  23. @echo off
  24. echo %test%
  25. echo %n%
  26. pause
  27. rem */
复制代码

作者: flyinnet9    时间: 2015-12-2 23:21

  1. @echo off
  2. call xxx.bat
  3. echo.%ipp%
复制代码

作者: ygqiang    时间: 2015-12-2 23:34

本帖最后由 pcl_test 于 2015-12-3 00:48 编辑

回复 6# pcl_test   

win7 64系统,生成.bat,文件内容如下:

@echo off
echo 测试
echo 15
pause
rem */


要求:不能改变1楼这个bat代码的基本功能,自动生成另一个bat文件。这个bat文件内容,就包含在bat代码里面。。
作者: ygqiang    时间: 2015-12-2 23:37

本帖最后由 pcl_test 于 2015-12-3 00:46 编辑

回复 7# flyinnet9


   

    要求:不能改变1楼这个bat代码的基本功能,自动生成另一个bat文件。
作者: pcl_test    时间: 2015-12-2 23:41

回复 8# ygqiang

不就是这样做的吗?还是你没把问题说明白
作者: ygqiang    时间: 2015-12-2 23:48

回复  ygqiang

不就是这样做的吗?还是你没把问题说明白
pcl_test 发表于 2015-12-2 23:41



bat代码,实现的功能是:
1、判断ip地址段,如果是192.168.9,ipp变量赋值20;否则ipp变量赋值10
2、bat代码自动生成bat文件c:\zcom.bat,并且复制到"%userprofile%\「开始」菜单\程序\启动"目录下。
3、倒计时5秒自动退出bat代码。
4、zcom.bat文件内容如下:
@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~fs0 h",0)(window.close)&&exit
:begin
rem 下边开始写批处代码了
ping 127.0.0.1 -n %ipp% >nul 2>nul
作者: pcl_test    时间: 2015-12-2 23:54

回复 11# ygqiang

你的代码我知道呀,可是你可看懂6楼的代码?把你相应的代码套进6楼的代码不就是了?
作者: ygqiang    时间: 2015-12-3 00:03

回复 12# pcl_test


    6楼的代码?看不懂啊。。。麻烦你了。。
作者: pcl_test    时间: 2015-12-3 00:21

本帖最后由 pcl_test 于 2015-12-3 00:28 编辑

回复 13# ygqiang


/*&cls
@echo off
for /f "tokens=15 delims= " %%i in ('ipconfig ^| find /i "IP Address"') do set i=%%i
for /f "tokens=1,2,3 delims=." %%i in ("%i%") do (set a=%%i.%%j.%%k)
echo %a%
set ipp=10
if "%a%" == "192.168.9" goto :next9
goto :next
:next9
set ipp=20
:next
echo %ipp%
echo 如何将这里的ipp变量值,传送到zcom.bat文件里面?

echo;---------------------------------------------
(for /f "delims=:" %%靠 in ('findstr /n "^:ExtraCodes$" "%~f0"') do (
    more +%%靠 "%~f0"|cscript -nologo -e:jscript "%~f0" "%%ipp%%|%ipp%"
))>c:\zcom.bat
copy /y c:\zcom.bat "%userprofile%\「开始」菜单\程序\启动"
ping 127.0.0.1 -n 5 >nul 2>nul
exit

*/
var battxt = WScript.StdIn.ReadAll();
for(var i=0; i<WScript.Arguments.length; i++)
{
    var tmp = WScript.Arguments(i).split('|');
    var reg = RegExp(tmp[0],'g');
    battxt = battxt.replace(reg, tmp[1]);
}
WSH.echo(battxt);
/*
---------------------------------------------
:ExtraCodes
@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~fs0 h",0)(window.close)&&exit
:begin
rem 下边开始写批处代码了

ping 127.0.0.1 -n %ipp% >nul 2>nul

echo 如何将最开始的ipp变量值,传送到这里来?
。。。。其他bat代码。。。。

rem */
作者: 依山居    时间: 2015-12-3 01:27

5 - 6年的伸手党~
作者: ygqiang    时间: 2015-12-3 08:37

回复 14# pcl_test


    多谢。。。生成的bat文件内容如下。原始的bat文件,结尾没有(rem */),能否自动删除掉呢?
@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~fs0 h",0)(window.close)&&exit
:begin
rem 下边开始写批处代码了

ping 127.0.0.1 -n 10 >nul 2>nul

echo 如何将最开始的ipp变量值,传送到这里来?
。。。。其他bat代码。。。。
rem */
作者: pcl_test    时间: 2015-12-3 09:26

回复 16# ygqiang


    有什么影响?
作者: ygqiang    时间: 2015-12-3 09:43

回复 17# pcl_test


    好吧。如果没啥影响。。。也就不管了。。。
作者: ygqiang    时间: 2015-12-3 09:44

回复 17# pcl_test


    话说,(rem */),这个在bat代码结尾,是表示啥意思呢?




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2