我试图找到一种方法将两个* .log文件复制到一个文件中。我的意图是使用For/R将每个文件名设置为一个变量。没有我想象的那么容易。日志文件每周都会有不同的随机名称,我想将它们合并到一个名为Kip.log的文件中。将文件名设置为变量的命令脚本
我只得到尽可能:
FOR /R D:\Temp %F in (*.log) do echo %~nxF
我不知道如何进一步得到。
我试图找到一种方法将两个* .log文件复制到一个文件中。我的意图是使用For/R将每个文件名设置为一个变量。没有我想象的那么容易。日志文件每周都会有不同的随机名称,我想将它们合并到一个名为Kip.log的文件中。将文件名设置为变量的命令脚本
我只得到尽可能:
FOR /R D:\Temp %F in (*.log) do echo %~nxF
我不知道如何进一步得到。
假设两个日志文件在d:\temp
那么这就足够了。
@echo off
pushd "d:\temp"
copy *.log kip.txt
ren kip.txt kip.log
我不认为我可以使用带有星号的副本,KISS很好。 – user2881052
要设置的变量(再附加)做到这一点:
pushd D:\Test
dir /b *.log >> files.tmp
setlocal enabledelayedexpansion
set count=0
for /f %%a in (files.tmp) do (
set /a count+=1
set "file!1!=%%~a"
)
:: Now you have 2 variables (or more) all file[number]
:: Below is to append
copy "%file1%"+"%file2%" Kip.log
希望这有助于。
与论坛网站不同,我们不使用“谢谢”或“任何帮助表示赞赏”,或在[所有]上签名。请参阅“[应该'嗨','谢谢',标语和致敬从帖子中删除?](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be -removed-from-posts) –
@ECHO OFF
SETLOCAL
(
FOR /r D:\temp %%F IN (
zd*.*
) DO TYPE "%%~fF"&echo========%%~fF============
)>KIP.LOG
GOTO :EOF
你不说你为什么需要设置两个变量;对于连接任务,这不是必需的。
上面的&echo========%%~fF============
只是添加了一个分隔符和找到的文件名。这不是必需的,如果你愿意,可以省略。
如果“需要”的变量名简单地删除它们,然后
德尔/秒d:\ TEMP * .LOG
会提出这样的任务的短期工作。
如果你可以只指定您希望使用通配符然后将这些文件,这将工作
副本* .LOG kip.log
或
副本* .LOG + B * .LOG基普.log
键入复制/? for帮助
不要使用古老的“DOS”命令shell,请考虑学习PowerShell。它是Windows的一部分,功能更加强大,并且使这类事情变得简单。 –
你真的需要搜索D:\ temp的子目录吗?假设抓住D:\ temp树下的所有* .log文件只会给你所需的2个东西,但这对我来说似乎有风险。您假定前一周的文件总是被删除,并且没有创建不相关的.log文件。 – dbenham
我希望在不久的将来将此批处理文件移植到Powershell,但现在我正在增强现有的批处理文件,直到我有时间进入PS。 – user2881052