标题: [代码合集] 两条或多条批处理怎样同时运行? [打印本页]
作者: sbjatje 时间: 2010-9-11 07:55 标题: 两条或多条批处理怎样同时运行?
- @echo off
- d:
- cd proewildfire 4.0\bin
- ptchostid>> d:\1.txt
- f:
- cd setup\4.0crack
- setlocal enabledelayedexpansion
- 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
复制代码
上面是二段批处理,第一段是查找电脑的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 编辑 ]
作者: Batcher 时间: 2010-9-11 08:34
- @echo off
- cd /d "D:\proewildfire 4.0\bin"
- ptchostid >D:\1.txt
- cd /d "F:\setup\4.0crack"
- setlocal enabledelayedexpansion
- 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_ ptc_licfile.txt
- del ptc_licfile.txt
- ren tmp_ ptc_licfile.txt
复制代码
作者: sbjatje 时间: 2010-9-11 08:52 标题: 板大,还是不行,
批处理执行到 在D盘创建了一个1.txt的文件后,就不执行后面的了,,,
作者: Batcher 时间: 2010-9-11 09:15
ptchostid是一个批处理?还是一个exe文件?
如果是批处理的话,代码贴出来看看。
作者: sbjatje 时间: 2010-9-11 09:19 标题: ptchostid 是一个批处理文件,全称是ptchostid.bat
代码是这样的:- @echo off
-
- set MC=unset
- if "%PROCESSOR%" == "INTEL_64" set MC=ia64_nt
- if "%PROCESSOR%" == "INTEL_486" set MC=i486_nt
- if "%PROCESSOR_ARCHITECTURE%" == "IA64" set MC=ia64_nt
- if "%PROCESSOR_ARCHITECTURE%" == "AMD64" set MC=x86e_win64
- if "%PROCESSOR_ARCHITECTURE%" == "x86" set MC=i486_nt
- if not "%MC%" == "unset" goto mc_done
- echo ERROR Cannot detect what machine type you have.
- echo Please make one of the following settings:
- echo.
- echo set PROCESSOR=INTEL_486 - For Windows NT Intel based machines.
- echo.
- echo set PROCESSOR=INTEL_64 - For Windows Intel Itanium based machines.
- echo.
- echo set PROCESSOR_ARCHITECTURE=AMD64 - For Windows AMD 64 based machines.
- echo.
- exit
- :mc_done
-
- set PRO_MACHINE_TYPE=%MC%
-
- if "%PROOBJ_START_DIRECTORY%" == "" set PRO_DIRECTORY=
- if NOT "%PRO_DIRECTORY%" == "" "%PRO_DIRECTORY%\bin\%MC%_ptc_setvars" %0 "ptchostid" bat
- if "%PRO_DIRECTORY%" == "" %MC%_ptc_setvars %0 "ptchostid" bat
- call ptc_setvars.bat
- del ptc_setvars.bat
-
- set start_cmd=start ""
-
- set PRO_DIRECTORY=%PRODIR%
- if NOT "%PTCPATH%" == "" goto ptcpathset
-
- set path=%PRO_DIRECTORY%\bin;%path%
-
- set PTCPATH=true
- :ptcpathset
-
-
- if NOT "%mc%" == "x86e_win64" goto x86do
- if EXIST "%prodir%\%mc%\obj\cpu_id.exe" goto x86do
- set MC=i486_nt
- :x86do
-
- "%PRODIR%\%MC%\obj\cpu_id.exe" %1 %2 %3 %4 %5
- :ptc_end
- exit /B %ERRORLEVEL%
复制代码
作者: Batcher 时间: 2010-9-11 11:25
- @echo off
- cd /d "D:\proewildfire 4.0\bin"
- start ptchostid >D:\1.txt
- rem 如果ptchostid.bat需要比较长的时间才能执行完,可以自己在下面加个延时。
- cd /d "F:\setup\4.0crack"
- setlocal enabledelayedexpansion
- 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_ ptc_licfile.txt
- del ptc_licfile.txt
- ren tmp_ ptc_licfile.txt
复制代码
作者: sbjatje 时间: 2010-9-11 12:29 标题: 板大,这样还是不行,,
按照你这个批处理,只能执行到在D盘创建一个1.txt文件,但是里面没有任何内容
后面的替换也完成不了
把第三行的start 去掉,D:\1.txt里,有内容,就是我要的内容,但后面的替换还是没完成....
[ 本帖最后由 sbjatje 于 2010-9-11 12:35 编辑 ]
作者: 随风 时间: 2010-9-11 20:32
把 start 换成 call 试试?
作者: sbjatje 时间: 2010-9-11 20:44 标题: 还是不行,,,
下面半节还是运行不了
作者: sgaizxt001 时间: 2010-9-11 21:25
我的建议是分成两个批处理,然后用第一个批处理,运行得到的结果使用call第2个批处理,同时把参数传递过去,这一的话第2个批处理。比如:- @echo off
- cd proewildfire 4.0\bin
- ptchostid>> d:\1.txt
- call a.bat d:\1.txt
复制代码
第2个bat的名字为a.bat,内容为:- @echo off
- pushd "F:\setup\4.0crack"
- setlocal enabledelayedexpansion
- for /f "tokens=2 delims==" %%a in (%1) 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
- popd
复制代码
[ 本帖最后由 sgaizxt001 于 2010-9-11 21:38 编辑 ]
作者: cjiabing 时间: 2010-9-13 22:28
单纯看代码:
@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 编辑 ]
作者: zqz0012005 时间: 2010-9-13 23:15 标题: 回复 8楼 的帖子
随风兄可能有印象,以前讨论过exit和exit /b的区别。现在就是这种区别发挥作用的时候。
1、批处理文件安全的退出方式是exit /b或goto :eof,否则如果直接用exit,则其他批处理调用它时(即使是通过call),这个exit会导致整个批处理全部退出!
2、批处理文件安全的调用方式是用call,hh ntcmds.chm::/call.htm 从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。否则如果没有加call,则父批处理在执行一个子bat后立即结束。
试试下面两段代码:- ::a.bat
- exit
- =============
- ::b.bat
- call a.bat
- echo ok& rem could not get here
- pause
复制代码
- ::a.bat
- dir
- =============
- ::b.bat
- a.bat
- echo ok& rem could not get here
- pause
复制代码
作者: Batcher 时间: 2010-9-14 00:01 标题: 回复 11楼 的帖子
可能是在DOS系统里面养成的习惯,因为DOS系统里面不支持cd /d。
作者: qcll 时间: 2010-9-14 09:08
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 编辑 ]
作者: sbjatje 时间: 2010-9-15 16:30 标题: 楼上的应该没看懂我上面写的
我什么时候说了,4.0crack在bin之下....哈哈
作者: qcll 时间: 2010-9-15 18:37
但你第二个cd肯定会在bin之下找setup\4.0crack 啊
作者: powerbat 时间: 2010-9-16 22:39 标题: 回复 12楼 的帖子
学到了。
不要让精华埋没!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |