我无法重命名批量文件并修改txt文件

时间:2017-03-21 07:11:56

标签: batch-file batch-processing

这是我的第一个问题,所以不要太难评判我。

我试图创建一个批处理文件,将PC名称,用户,日期和时间输入到文本(.txt)文件中。我想要/需要它有多个日志而且只有文件。

(文本文件将在同一目录中)

这是我到目前为止所做的,它似乎适用于前2个(你会看到我的意思)然后它会生成另一个名为1的文件。我不知道它是我的笔记本电脑还是它的我缺乏任何编码技巧。

@echo off

:make1
if exist "1.txt" goto make2
set SomeVar=%ComputerName% %UserName% %date% %time% 
echo %SomeVar% > "1.txt"


exit


:make2

if exist "2.txt" goto make3
ren "1.txt" "2.txt"
echo %SomeVar% >> "2.txt"

exit


:make3
if exist "3.txt" goto make4
ren "2.txt" "3.txt"
echo %SomeVar% >>> "3.txt"
exit

:make4
if exist "4.txt" goto make5
ren "3.txt" "4.txt"
echo %SomeVar% >>>> "4.txt"

exit

:make5
if exist "5.txt" goto make6
ren "4.txt" "5.txt"
set SomeVar=%ComputerName% %UserName% %date% %time% 
echo %SomeVar% >>>>> "5.txt"

 exit

:make6

set SomeVar=%ComputerName% %UserName% %date% %time% 
echo %SomeVar% >>>>>> "6.txt"


pause
exit

我知道最后一个将被覆盖,但我可能会被打扰添加堆 (如果你有办法让它变得无限,那将非常感激。)

我在学校上课期间完成了大部分工作,大约一年前我开始批量生产,对于糟糕/粗暴/过度/烦人的代码感到抱歉

谢谢,ThePolarBear

2 个答案:

答案 0 :(得分:1)

> mean overwrite entire line
>> append to last line

您无需输入>>>>>

答案 1 :(得分:0)

@echo off
setlocal


:make1
set next=1
if exist "1.txt" goto makeNext

set SomeVar=%ComputerName% %UserName% %date% %time% 
echo %SomeVar% > "1.txt"
exit


:makeNext
set /A next+=1
if exist "%next%.txt" goto makeNext

set /A prev=next-1
ren "%prev%.txt" "%next%.txt"
set SomeVar=%ComputerName% %UserName% %date% %time% 
echo %SomeVar% >> "%next%.txt"
exit
  • 错误原因是多个>>>...。使用一个>创建一个新文件。使用两个 >>将数据附加到现有文件,或者如果它不存在则创建它。
  • setlocal命令会在结束时自动删除在此批处理文件中创建的变量,如SomeVar。在这种情况下,这是一个方便的功能。某些高级程序(与“延迟扩展”相关)需要使用setlocal

如果您对此代码有任何疑问,请询问。但是,您应首先查看相关命令的帮助,例如:set /?;否则,我会回答:“看到这样一个命令的帮助”的简单问题!的 ;)