[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[代码合集] 两条或多条批处理怎样同时运行?

  1. @echo off
  2. d:
  3. cd proewildfire 4.0\bin
  4. ptchostid>> d:\1.txt
  5. f:
  6. cd setup\4.0crack
  7. setlocal enabledelayedexpansion
  8. for /f "tokens=2 delims==" %%a in (d:\1.txt) do set mac=%%a
  9. (for /f "delims=" %%i in (ptc_licfile.txt) do (
  10.   set str=%%i
  11.   set str=!str:00-00-00-00-00-00=%mac%!
  12.   echo !str!
  13. ))>tmp_
  14. del ptc_licfile.txt
  15. ren tmp_ ptc_licfile.txt
复制代码
上面是二段批处理,第一段是查找电脑的id, 也就是说把电脑的id号放在D:\1.txt中,打开这个1.txt里面显示:
   PTC HOSTID = 00-1D-7D-74-B5-C7
第二段是用查找到的id(00-1D-7D-74-B5-C7)去替换掉ptc_licfile.txt里面的00-00-00-00-00-00
   有一个问题,为什么两段分成两个bat能运行,但是两段合在一起如上图所示,下半节,就是替换00-00-00-00-00-00,就执行不了,
请高手出招,帮我解决下,,,谢谢....

[ 本帖最后由 sbjatje 于 2010-9-11 08:56 编辑 ]

  1. @echo off
  2. cd /d "D:\proewildfire 4.0\bin"
  3. ptchostid >D:\1.txt
  4. cd /d "F:\setup\4.0crack"
  5. setlocal enabledelayedexpansion
  6. for /f "tokens=2 delims==" %%a in (D:\1.txt) do set mac=%%a
  7. (for /f "delims=" %%i in (ptc_licfile.txt) do (
  8.     set "str=%%i"
  9.     set "str=!str:00-00-00-00-00-00=%mac%!"
  10.     echo,!str!
  11. ))>tmp_ ptc_licfile.txt
  12. del ptc_licfile.txt
  13. ren tmp_ ptc_licfile.txt
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

板大,还是不行,

批处理执行到 在D盘创建了一个1.txt的文件后,就不执行后面的了,,,

TOP

ptchostid是一个批处理?还是一个exe文件?
如果是批处理的话,代码贴出来看看。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

ptchostid 是一个批处理文件,全称是ptchostid.bat

代码是这样的:
  1. @echo off
  2. set MC=unset
  3. if "%PROCESSOR%" == "INTEL_64" set MC=ia64_nt
  4. if "%PROCESSOR%" == "INTEL_486" set MC=i486_nt
  5. if "%PROCESSOR_ARCHITECTURE%" == "IA64" set MC=ia64_nt
  6. if "%PROCESSOR_ARCHITECTURE%" == "AMD64" set MC=x86e_win64
  7. if "%PROCESSOR_ARCHITECTURE%" == "x86" set MC=i486_nt
  8. if not "%MC%" == "unset" goto mc_done
  9. echo ERROR Cannot detect what machine type you have.
  10. echo Please make one of the following settings:
  11. echo.
  12. echo set PROCESSOR=INTEL_486     - For Windows NT Intel based machines.
  13. echo.
  14. echo set PROCESSOR=INTEL_64      - For Windows Intel Itanium based machines.
  15. echo.
  16. echo set PROCESSOR_ARCHITECTURE=AMD64 - For Windows AMD 64 based machines.
  17. echo.
  18. exit
  19. :mc_done
  20. set PRO_MACHINE_TYPE=%MC%
  21. if "%PROOBJ_START_DIRECTORY%" == "" set PRO_DIRECTORY=
  22. if NOT "%PRO_DIRECTORY%" == "" "%PRO_DIRECTORY%\bin\%MC%_ptc_setvars" %0 "ptchostid" bat
  23. if "%PRO_DIRECTORY%" == "" %MC%_ptc_setvars %0 "ptchostid" bat
  24. call ptc_setvars.bat
  25. del  ptc_setvars.bat
  26. set start_cmd=start ""
  27. set PRO_DIRECTORY=%PRODIR%
  28. if NOT "%PTCPATH%" == "" goto ptcpathset
  29. set path=%PRO_DIRECTORY%\bin;%path%
  30. set PTCPATH=true
  31. :ptcpathset
  32. if NOT "%mc%" == "x86e_win64" goto x86do
  33. if EXIST "%prodir%\%mc%\obj\cpu_id.exe" goto x86do
  34. set MC=i486_nt
  35. :x86do
  36. "%PRODIR%\%MC%\obj\cpu_id.exe" %1 %2 %3 %4 %5
  37. :ptc_end
  38. exit /B %ERRORLEVEL%
复制代码

TOP

  1. @echo off
  2. cd /d "D:\proewildfire 4.0\bin"
  3. start ptchostid >D:\1.txt
  4. rem 如果ptchostid.bat需要比较长的时间才能执行完,可以自己在下面加个延时。
  5. cd /d "F:\setup\4.0crack"
  6. setlocal enabledelayedexpansion
  7. for /f "tokens=2 delims==" %%a in (D:\1.txt) do set mac=%%a
  8. (for /f "delims=" %%i in (ptc_licfile.txt) do (
  9.     set "str=%%i"
  10.     set "str=!str:00-00-00-00-00-00=%mac%!"
  11.     echo,!str!
  12. ))>tmp_ ptc_licfile.txt
  13. del ptc_licfile.txt
  14. ren tmp_ ptc_licfile.txt
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

板大,这样还是不行,,

按照你这个批处理,只能执行到在D盘创建一个1.txt文件,但是里面没有任何内容
后面的替换也完成不了


把第三行的start 去掉,D:\1.txt里,有内容,就是我要的内容,但后面的替换还是没完成....

[ 本帖最后由 sbjatje 于 2010-9-11 12:35 编辑 ]

TOP

把 start   换成  call  试试?
技术问题请到论坛发帖求助!

TOP

还是不行,,,

下面半节还是运行不了

TOP

我的建议是分成两个批处理,然后用第一个批处理,运行得到的结果使用call第2个批处理,同时把参数传递过去,这一的话第2个批处理。比如:
  1. @echo off
  2. cd proewildfire 4.0\bin
  3. ptchostid>> d:\1.txt
  4. call a.bat d:\1.txt
复制代码
第2个bat的名字为a.bat,内容为:
  1. @echo off
  2. pushd "F:\setup\4.0crack"
  3. setlocal enabledelayedexpansion
  4. for /f "tokens=2 delims==" %%a in (%1) do set mac=%%a
  5. (for /f "delims=" %%i in (ptc_licfile.txt) do (
  6.     set "str=%%i"
  7.     set "str=!str:00-00-00-00-00-00=%mac%!"
  8.     echo,!str!
  9. ))>tmp_
  10. del ptc_licfile.txt
  11. ren tmp_ ptc_licfile.txt
  12. popd
复制代码

[ 本帖最后由 sgaizxt001 于 2010-9-11 21:38 编辑 ]
努力学习,努力挣分

TOP

单纯看代码:
@echo off
d:——没见过这种东东
cd proewildfire 4.0\bin——进入目录,路径名有无空格似乎不要紧
ptchostid>> d:\1.txt ——'ptchostid' 不是内部或外部命令,也不是可运行的程序
——按意图分析,应该是想获取“ptchostid”执行后得到的值 1.txt,但这样写似乎不合格,至少缺乏后缀名,程序遇到问题退出,不必那么麻烦,可以换成call、start、echo ok看看……
f:
cd setup\4.0crack ——转换目录需要用CD /D……为什么喜欢用CD?
setlocal enabledelayedexpansion——接着上面的代码结果处理,需要等待上面的代码执行完毕——start /wait ?延时?检测后面的是否有效请改成ECHO试试
for /f "tokens=2 delims==" %%a in (d:\1.txt) do set mac=%%a
(for /f "delims=" %%i in (ptc_licfile.txt) do (
  set str=%%i
  set str=!str:00-00-00-00-00-00=%mac%!——尝试使用&,未定
  echo !str!
))>tmp_——为什么都不见后缀名?去掉外层的括号
del ptc_licfile.txt
ren tmp_ ptc_licfile.txt
——请保证两个代码本身的正确有效,并且考虑效率,不必写太多的代码。
——见了很多次你那个“PTC HOSTID = 00-1D-7D-74-B5-C7”,写代码的时候请多思考,边学习边写,不懂关键还是要自己动脑筋。
——就你的题目而言,一保证你两个代码各自的可执行性,二保证两者之间没有发生联系,比如变量延迟、变量同名……,同时运行其实很简单:
@echo off
start "" "E:\Batch\网络\邮件与加密\邮件\最新邮件收发监控\OEInboxtoolV6.2.bat">>test.txt
call "E:\Batch\网络\QQ访问\QQ校友交友访问工具.bat"
exit

[ 本帖最后由 cjiabing 于 2010-9-13 22:35 编辑 ]

TOP

回复 8楼 的帖子

随风兄可能有印象,以前讨论过exit和exit /b的区别。现在就是这种区别发挥作用的时候。
1、批处理文件安全的退出方式是exit /b或goto :eof,否则如果直接用exit,则其他批处理调用它时(即使是通过call),这个exit会导致整个批处理全部退出!
2、批处理文件安全的调用方式是用call,hh ntcmds.chm::/call.htm 从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。否则如果没有加call,则父批处理在执行一个子bat后立即结束。
试试下面两段代码:
  1. ::a.bat
  2. exit
  3. =============
  4. ::b.bat
  5. call a.bat
  6. echo ok& rem could not get here
  7. pause
复制代码
  1. ::a.bat
  2. dir
  3. =============
  4. ::b.bat
  5. a.bat
  6. echo ok& rem could not get here
  7. pause
复制代码
1

评分人数

命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

回复 11楼 的帖子

可能是在DOS系统里面养成的习惯,因为DOS系统里面不支持cd /d。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

lz在检查一下路径把,LZ用cd 进入proewildfire 4.0\bin实行完ptchostid后,直接cd试图进入setup\4.0crack ,据我记忆中PRO/E的setup\4.0crack 文件夹不在bin文件夹之下,它应该在proewildfire 4.0之下,这就是LZ“为什么两段分成两个bat能运行,但是两段合在一起如上图所示,下半节,就是替换00-00-00-00-00-00,就执行不了”的原因
在你第二个cd后面加两个点一撇..\试试看

[ 本帖最后由 qcll 于 2010-9-14 09:34 编辑 ]

TOP

楼上的应该没看懂我上面写的

我什么时候说了,4.0crack在bin之下....哈哈

TOP

返回列表