标题: [文件操作] BAT批处理怎样echo输出set到其他文件? [打印本页]
作者: honey_liuyong 时间: 2014-1-9 18:04 标题: BAT批处理怎样echo输出set到其他文件?
- set jobFile=changeJobPwd.bat
- echo @echo off>%jobFile%
- echo set test=1>>%jobFile%
- echo SETLOCAL ENABLEDELAYEDEXPANSION>>%jobFile%
- echo set taskname^=0>>%jobFile%
- echo set runas=0>>%jobFile%
- echo set status=0>>%jobFile%
- echo set fl=0>>%jobFile%
- echo for /f "tokens=1-2 delims=:" %%%%i in ('schtasks /query /v /fo list') do (>>%jobFile%
- echo if "%%i"=="TaskName" (>>%jobFile%
- echo set taskname=%%%%j>>%jobFile%
- echo )>>%jobFile%
- echo if "%%i"=="Scheduled Task State" (>>%jobFile%
- echo set status=%%%%j>>%jobFile%
- echo )>>%jobFile%
- echo if "%%i"=="Run As User" (>>%jobFile%
- echo set runas=%%%%j>>%jobFile%
- echo echo !taskname! !runas! !status!^>^>%%fl%%>>%jobFile%
- echo )>>%jobFile%
- echo )>>%jobFile%
- echo for /f "tokens=1-3 delims= " %%%%1 in (%%fl%%) do (>>%jobFile%
- echo for /f "delims=/" %%%%5 in (%%%%2) do (>>%jobFile%
- echo if %%%%6 == %os_id% and %%%%3 == "Enabled" (>>%jobFile%
- echo schtasks /change /tn %%%%1 /rp %%new_pwd_str%%>>%jobFile%
- echo )>>%jobFile%
- echo )>>%jobFile%
- echo )>>%jobFile%
- echo ENDLOCAL>>%jobFile%
- pause
复制代码
这段代码是用bat生成另外一个bat.
但- echo set taskname^=0>>%jobFile%
- echo set runas=0>>%jobFile%
- echo set status=0>>%jobFile%
- echo set fl=0>>%jobFile%
复制代码
这段代码没办法生成到changeJobPwd.bat.
而- echo set test=1>>%jobFile%
复制代码
只能输出set test=
那位大侠能解释一下原因么?
作者: DAIC 时间: 2014-1-9 21:52
- >>%jobFile% echo set taskname^=0
- >>%jobFile% echo set runas=0
- >>%jobFile% echo set status=0
- >>%jobFile% echo set fl=0
复制代码
作者: honey_liuyong 时间: 2014-1-10 09:51
回复 2# DAIC
多谢.测试代码可以解决问题. 但这是什么原理?
作者: DAIC 时间: 2014-1-10 09:56
0
1
2
是默认的句柄
作者: honey_liuyong 时间: 2014-1-10 13:56
回复 4# DAIC
我测试了一下如果写成 echo set test=[0-9] >>file.txt
就无法输出到文件. 如果变成两位数或者字符就可以.
作者: DAIC 时间: 2014-1-11 14:03
回复 5# honey_liuyong
0-9是可以使用的句柄
0-2是默认的句柄
作者: PowerShell 时间: 2014-1-11 16:33
powershell祖师爷用智慧,为我们创造了【无需在原始字符串中插入转义符,不破坏原始字符串可读性】的【文本处理】的妙法! -----------这句话转自本人拙作 http://www.bathome.net/thread-27666-1-2.html
这个拙作你要是看了,你绝不会再想用bat生成bat!而会想用powershell生成任何代码!任何文本!
-------------------------分割线-------------------------------
powershell代码- $aaa =
- @'
- @echo off
- set test=
- SETLOCAL ENABLEDELAYEDEXPANSION
- set taskname=0
- set runas=0
- set status=0
- set fl=0
- for /f "tokens=1-2 delims=:" %%i in ('schtasks /query /v /fo list') do (
- if "%i"=="TaskName" (
- set taskname=%%j
- )
- if "%i"=="Scheduled Task State" (
- set status=%%j
- )
- if "%i"=="Run As User" (
- set runas=%%j
- echo !taskname! !runas! !status!>>%fl%
- )
- )
- for /f "tokens=1-3 delims= " %%1 in (%fl%) do (
- for /f "delims=/" %%5 in (%%2) do (
- if %%6 == and %%3 == "Enabled" (
- schtasks /change /tn %%1 /rp %new_pwd_str%
- )
- )
- )
- ENDLOCAL
- '@
-
- Out-File bbb.bat -InputObject $aaa -Encoding ansi
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |