标题: [文本处理] 自动创建批处理文件怎么写? [打印本页]
作者: 雨夜秋风 时间: 2010-5-26 13:52 标题: 自动创建批处理文件怎么写?
我想写一个打开一个BAT文件运行后自动创建BAT文件在本目录下并打开自身
创建的BAT文件里的内容自定。比如我预设要写入abcb,创建的BAT文件里的内容也是abcd
作者: hanyeguxing 时间: 2010-5-26 14:32
示例:
1,从此批处理程序调用新创建批处理程序,并且不终止父批处理程序,运行完成后删除新创建的批处理程序- @echo off
- more +5<"%~fs0">"%~n0_.bat"
- call "%~n0_.bat" "要传递的参数"
- del "%~n0_.bat"
- pause&exit
- ::下面为新创建批处理程序的代码:
- @echo off
- echo.%~1
- ping -n 10 127.1>nul
复制代码
2,从此批处理程序调用新创建批处理程序,并且删除父批处理程序:- @echo off
- more +5<"%~fs0">"%~n0_.bat"
- start "" "%~n0_.bat"
- del "%~fs0"
- exit
- ::下面为新创建批处理程序的代码:
- @echo off
- echo.正在新批处理中
- ping -n 10 127.1>nul
- exit
复制代码
[ 本帖最后由 hanyeguxing 于 2010-5-26 14:47 编辑 ]
作者: 雨夜秋风 时间: 2010-5-26 16:01 标题: 回复 2楼 的帖子
@echo off&setlocal enabledelayedexpansion
for /f "tokens=3* delims=," %%a in ('WMIC Path Win32_LogicalDisk Get
Description^,DeviceID^,FileSystem /format:csv^|find "可移动磁盘"') do (
set a=%%a
more +5<"%~fs0">"!a:~0,1!.bat"
call "!a:~0,1!.bat" "正在运行中"
del "!a:~0,1!.bat"
pause&exit
@echo off
format "!a:~0,1!.BAT"/fs:fat32/y)
pausep
我这样写怎么创建不了bat文件的呢?帮忙解决一下。谢了!
作者: hanyeguxing 时间: 2010-5-26 16:20
为什么不能写成这样呢?- @echo off
- for /f "skip=1" %%a in ('wmic logicaldisk where DriveType^=2 get DeviceID') do format %%a /q /x /fs:fat32
复制代码
[ 本帖最后由 hanyeguxing 于 2010-5-26 21:07 编辑 ]
作者: 雨夜秋风 时间: 2010-5-26 17:56 标题: 回复 4楼 的帖子
我在学嘛!要自己想怎样运行就怎样动才有成就感的呀
帮忙写一个出来的哦。谢了!
作者: hanyeguxing 时间: 2010-5-26 19:53
非得这么写?- @echo off&setlocal enabledelayedexpansion
- for /f "skip=1" %%a in ('wmic logicaldisk where DriveType^=2 get DeviceID') do (
- set a=%%a
- set a=!a:~0,1!.bat
- more +9<"%~fs0">!a!
- call !a! "%%a"
- del !a!
- )
- pause&exit
- @echo off
- echo.正在格式化 %1 中...
- format %~1 /fs:fat32 /y
复制代码
或:- @echo off
- more +5<"%~fs0">$tmp$.bat
- for /f "skip=1" %%a in ('wmic logicaldisk where DriveType^=2 get DeviceID') do call "$tmp$.bat" "%%a"
- del "$tmp$.bat"
- pause&exit
- @echo off
- echo.正在格式化 %1 中...
- format %~1 /fs:fat32 /y
复制代码
[ 本帖最后由 hanyeguxing 于 2010-5-26 21:07 编辑 ]
作者: 雨夜秋风 时间: 2010-5-27 08:58 标题: 已解决回复 6楼 的帖子
再次多谢寒夜兄帮我解决问题
我把它有一点点的改动了才是我最想要的东西@echo off&setlocal enabledelayedexpansion
for /f "skip=1" %%a in ('wmic logicaldisk where DriveType^=2 get
DeviceID') do (
set a=%%a
set a=!a:~0,1!.bat
more +9<"%~fs0">!a!
start !a! "%%a")
pause
@echo off
echo.正在格式化 %1 中...
format %~1 /fs:fat32/y && exit/y
我还有两个不懂的地方“format %~1”为什么不是”!a!“呢?还有我改动了之后
@echo off
echo.正在格式化 %1 中...这里怎么不起作用了呢?
作者: sgaizxt001 时间: 2010-5-27 09:16
不起作用的话可能是因为这个:
more +9<"%~fs0">!a!意思是把这个批处理第9行以后的代码写进a.bat你看看你的代码行数
format %~1 /fs:fat32/y && exit/y是在当前批处理运行a.bat,并把"%%a"作为参数传递给a.bat,所以format a写成format %~1,这里是去掉引号的%%a
作者: 雨夜秋风 时间: 2010-5-27 09:50 标题: 回复 8楼 的帖子
也就是说%%a=%~1, 是吗?是不是也可以写成format %%a/fs:fat32/y && exit/y呢?
作者: 雨夜秋风 时间: 2010-5-27 15:16 标题: 回复 6楼 的帖子
@echo off&setlocal enabledelayedexpansion
for /f "skip=1" %%a in ('wmic logicaldisk where DriveType^=2 get DeviceID') do (
set a=%%a
set a=!a:~0,1!.bat
more +8<"%~fs0">!a!
start !a! "%%a"
)
pause&exit
@echo off
echo.正在格式化 %1 中...
format %~1 /fs:fat32 /y
set a=!a:~0,1!.bat
if format=%% goto copy 123 !a!
del !a!
exit/y
我想在创建新的bat文件里加入format成功后就复制指定文件里的内空到本磁盘里然后再删除自身。帮忙解决一下。谢了!
作者: 雨夜秋风 时间: 2010-5-27 21:21
@echo off&setlocal enabledelayedexpansion
for /f "skip=1" %%a in ('wmic logicaldisk where DriveType^=2 get DeviceID') do (
set a=%%a
set a=!a:~0,1!.bat
more +8<"%~fs0">!a!
start !a! "%%a"
)
pause&exit
@echo off
echo.正在格式化 %~1 中...
format %~1 /fs:fat32/y
del %0
已解决删除自身。还有一个格式化不成功不复制文件到磁盘里
作者: sgaizxt001 时间: 2010-5-28 00:16 标题: 回复9楼
不可以写成format %%a,因为是这个批处理来运行a.bat,但是a.bat里没有定义%%a变量,需要给a.bat传递一个%%a的参数
作者: 雨夜秋风 时间: 2010-5-28 08:25 标题: 回复 12楼 的帖子
那怎么变成了”%~1“的了呢?
作者: sgaizxt001 时间: 2010-5-28 08:40
在传递参数的时候,写的是"%%a",start !a! "%%a",%~1是去掉了双引号变成format %%a /fs:fat32/y。你可以添加echo语句看看区别- @echo off&setlocal enabledelayedexpansion
- for /f "skip=1" %%a in ('wmic logicaldisk where DriveType^=2 get DeviceID') do (
- set a=%%a
- set a=!a:~0,1!.bat
- more +8<"%~fs0">!a!
- start !a! "%%a" & echo 原来的变量是:%%a
- )
- pause&exit
- @echo off
- echo.正在格式化 %~1 中...
- echo 传递的参数分别是:%1 %~1
- rem format %~1 /fs:fat32/y
- rem del %0
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |