批处理:如何把一个文件的内容复制到另外一个文件
大家好,我想实现一个功能:第一次开机执行on.bat,第2次开机执行off.bat,第3次开机执行on.bat,第4次开机执行off.bat,第5次开机执行on.bat。...
大家好,我想实现一个功能:第一次开机执行on.bat,第2次开机执行off.bat,第3次开机执行on.bat,第4次开机执行off.bat,第5次开机执行on.bat。。。。
因为不知道如何在.bat中设置一个变量,使的每次开机都保持关机前设定的值,所以采用把变量存入文件中的办法。
问题:
我使用了3个文本文件:on.txt(on),off.txt(0ff),a.txt(on)。(括号内为文件内容)
目前不知道如何把on.txt 或者 off.txt 的文件 写入 c.txt.
我的程序见下:
通过判断switch是否为字符串on(),来调用不同的.bat。
set /p a=<%f:\a.txt%
if %a% == "on" (goto caseon)
else (goto caseoff)
:caseon
call 1.bat
echo "1 is run"
set /p str=<%f:\off.txt%
echo %str% > %f:\a.txt%
goto lala
:caseoff
call 2.bat
echo "2 is run"
set /p str=<%f:\on.txt%
echo %str% > %f:\a.txt%
goto lala
:lala
exit
如果有其他更方便的方法请分享下,对写.bat的了解一个小时,很多地方不懂。谢谢大家!
谢谢。
逻辑上感觉完全没有问题。
但是跑的过程中产生2个问题,不知道是调试环境的问题还是别的。如果可以帮忙解答,不甚感激。
1,不知道是不是数字1,0的关系,直接把在check.ini文件中输入了一下的内容:ECHO 处于关闭状态 。因为整个逻辑没办法跑下去。
2,把1,0换了之后,发现还是跑的不成功,感觉与exit有关,去掉exit,达到预期效果。
下面是我修改的,在winxp sp3 的cmd的命令窗口下调试通过。
@echo on
if not exist check.ini (
echo kai>check.ini
)
set /p check=<check.ini
echo %check%
if %check% == kai (
goto :on
)
if %check% == guan (
goto :off
)
:on
call 1.bat
echo "1 is run"
echo guan>check.ini
goto lala
:off
call 2.bat
echo "2 is run"
echo kai>check.ini
goto lala
:lala
echo lala 展开
因为不知道如何在.bat中设置一个变量,使的每次开机都保持关机前设定的值,所以采用把变量存入文件中的办法。
问题:
我使用了3个文本文件:on.txt(on),off.txt(0ff),a.txt(on)。(括号内为文件内容)
目前不知道如何把on.txt 或者 off.txt 的文件 写入 c.txt.
我的程序见下:
通过判断switch是否为字符串on(),来调用不同的.bat。
set /p a=<%f:\a.txt%
if %a% == "on" (goto caseon)
else (goto caseoff)
:caseon
call 1.bat
echo "1 is run"
set /p str=<%f:\off.txt%
echo %str% > %f:\a.txt%
goto lala
:caseoff
call 2.bat
echo "2 is run"
set /p str=<%f:\on.txt%
echo %str% > %f:\a.txt%
goto lala
:lala
exit
如果有其他更方便的方法请分享下,对写.bat的了解一个小时,很多地方不懂。谢谢大家!
谢谢。
逻辑上感觉完全没有问题。
但是跑的过程中产生2个问题,不知道是调试环境的问题还是别的。如果可以帮忙解答,不甚感激。
1,不知道是不是数字1,0的关系,直接把在check.ini文件中输入了一下的内容:ECHO 处于关闭状态 。因为整个逻辑没办法跑下去。
2,把1,0换了之后,发现还是跑的不成功,感觉与exit有关,去掉exit,达到预期效果。
下面是我修改的,在winxp sp3 的cmd的命令窗口下调试通过。
@echo on
if not exist check.ini (
echo kai>check.ini
)
set /p check=<check.ini
echo %check%
if %check% == kai (
goto :on
)
if %check% == guan (
goto :off
)
:on
call 1.bat
echo "1 is run"
echo guan>check.ini
goto lala
:off
call 2.bat
echo "2 is run"
echo kai>check.ini
goto lala
:lala
echo lala 展开
3个回答
展开全部
@echo off
::这部分是将批处理自动加入到启动项。
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v TEST /t REG_SZ /d "%~f0" /f
::这段就是你要求实现的功能,请不用手动创建或者删除C:\on文件夹。
IF EXIST C:\on (GOTO OFF) ELSE GOTO ON
:OFF
rd /s /q C:\on
::这里写原off.bat的系列命令
GOTO END
:ON
md C:\on
::这里写原on.bat的系列命令
GOTO END
:END
exit
如果on.bat和off.bat的顺序乱了,你可以对调它们的内容。我是按照你要求的功能写的,但不是“如何把一个文件的内容复制到另外一个文件”的批处理。希望可以帮到你:)
::这部分是将批处理自动加入到启动项。
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v TEST /t REG_SZ /d "%~f0" /f
::这段就是你要求实现的功能,请不用手动创建或者删除C:\on文件夹。
IF EXIST C:\on (GOTO OFF) ELSE GOTO ON
:OFF
rd /s /q C:\on
::这里写原off.bat的系列命令
GOTO END
:ON
md C:\on
::这里写原on.bat的系列命令
GOTO END
:END
exit
如果on.bat和off.bat的顺序乱了,你可以对调它们的内容。我是按照你要求的功能写的,但不是“如何把一个文件的内容复制到另外一个文件”的批处理。希望可以帮到你:)
展开全部
建立一个check.ini配置文件,每次运行本批处理从该配置文件内读取值到check变量,判断该变量的值
@echo off
if not exist check.ini (
echo 0>check.ini
)
set /p check=<check.ini
if %check% equ 0 (
goto :on
)
if %check% equ 1 (
goto :off
)
exit
:on
call 1.bat
echo "1 is run"
set /p str=<%f:\off.txt%
echo %str% > %f:\a.txt%
echo 1>check.ini
goto lala
exit
:off
call 2.bat
echo "2 is run"
set /p str=<%f:\on.txt%
echo %str% > %f:\a.txt%
echo 0>check.ini
goto lala
exit
:lala
exit
@echo off
if not exist check.ini (
echo 0>check.ini
)
set /p check=<check.ini
if %check% equ 0 (
goto :on
)
if %check% equ 1 (
goto :off
)
exit
:on
call 1.bat
echo "1 is run"
set /p str=<%f:\off.txt%
echo %str% > %f:\a.txt%
echo 1>check.ini
goto lala
exit
:off
call 2.bat
echo "2 is run"
set /p str=<%f:\on.txt%
echo %str% > %f:\a.txt%
echo 0>check.ini
goto lala
exit
:lala
exit
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
非常佩服,才了解一个小时就用了这么多命令。
不需要多的文件只一个批处理,把它加到开机启动项就ok。反复测试下面代码,可行再据你情况改编:
::0
@echo off
set/p a=<%~f0
set a=%a:~-1%
set/a b=!%a%
echo ::%b%>yky
more +1 %~f0>>yky
copy yky %~f0>nul&&del yky
goto A%a%
:A0
echo 这里写原on.bat的系列命令
goto end
:A1
echo 这里写原off.bat的系列命令
:end
pause
不需要多的文件只一个批处理,把它加到开机启动项就ok。反复测试下面代码,可行再据你情况改编:
::0
@echo off
set/p a=<%~f0
set a=%a:~-1%
set/a b=!%a%
echo ::%b%>yky
more +1 %~f0>>yky
copy yky %~f0>nul&&del yky
goto A%a%
:A0
echo 这里写原on.bat的系列命令
goto end
:A1
echo 这里写原off.bat的系列命令
:end
pause
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询