2013-10-15 143 views
1

我试图找到一种方法将两个* .log文件复制到一个文件中。我的意图是使用For/R将每个文件名设置为一个变量。没有我想象的那么容易。日志文件每周都会有不同的随机名称,我想将它们合并到一个名为Kip.log的文件中。将文件名设置为变量的命令脚本

我只得到尽可能:

FOR /R D:\Temp %F in (*.log) do echo %~nxF 

我不知道如何进一步得到。

+0

不要使用古老的“DOS”命令shell,请考虑学习PowerShell。它是Windows的一部分,功能更加强大,并且使这类事情变得简单。 –

+0

你真的需要搜索D:\ temp的子目录吗?假设抓住D:\ temp树下的所有* .log文件只会给你所需的2个东西,但这对我来说似乎有风险。您假定前一周的文件总是被删除,并且没有创建不相关的.log文件。 – dbenham

+0

我希望在不久的将来将此批处理文件移植到Powershell,但现在我正在增强现有的批处理文件,直到我有时间进入PS。 – user2881052

回答

3

假设两个日志文件在d:\temp那么这就足够了。

@echo off 
pushd "d:\temp" 
copy *.log kip.txt 
ren kip.txt kip.log 
+0

我不认为我可以使用带有星号的副本,KISS很好。 – user2881052

0

要设置的变量(再附加)做到这一点:

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 

希望这有助于。

+0

与论坛网站不同,我们不使用“谢谢”或“任何帮助表示赞赏”,或在[所有]上签名。请参阅“[应该'嗨','谢谢',标语和致敬从帖子中删除?](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be -removed-from-posts) –

0
@ECHO OFF 
SETLOCAL 
(
FOR /r D:\temp %%F IN (
    zd*.* 
) DO TYPE "%%~fF"&echo========%%~fF============ 
)>KIP.LOG 
GOTO :EOF 

你不说你为什么需要设置两个变量;对于连接任务,这不是必需的。

上面的&echo========%%~fF============只是添加了一个分隔符和找到的文件名。这不是必需的,如果你愿意,可以省略。

如果“需要”的变量名简单地删除它们,然后

德尔/秒d:\ TEMP * .LOG

会提出这样的任务的短期工作。

2

如果你可以只指定您希望使用通配符然后将这些文件,这将工作

副本* .LOG kip.log

副本* .LOG + B * .LOG基普.log

键入复制/? for帮助