批处理脚本,将文件名复制到txt文件

时间:2013-09-15 22:32:36

标签: batch-file

任何人都可以协助,我创建一个批处理脚本,它将从我的列表中创建一堆txt文件,然后txt需要在文本上包含几行,部分需要具有文件名。 所以例如。

 mkdir file1.txt

然后.txt文件需要:

 this file contains info
 owner of the file is 'file.txt'
 data for this file is in C:\Users\'file.txt'

如果不够清楚,请告诉我 感谢


(从OP的评论中复制/格式化 - OP:使用编辑链接编辑您的问题(当然明智地))

到目前为止我已写过

@echo off 
for %%a in (*.txt) do type customer=customer fromAddress=email@domain.com andOrAddress=OR toAddress=email@domain.com outputPath=E:\Exgest\customer\email@domain.com outputFormat=MIME customHeaders=true fromDate=20030901 toDate=20101231 >> (*.txt)

无法在此文件夹中添加文本并仅创建* .txt文件。然后我试着跑步     复制>> email@domain.com

列表中的每个电子邮件地址,然后     copy con>>每个文件的名称

刚刚添加的语法对txt文件是正确的。对不起,伙计们,我是批处理脚本的新手。

3 个答案:

答案 0 :(得分:0)

如果要在文件中写入内容,则需要在批处理文件中写入:

@ECHO OFF

ECHO.this file contains info>>file.txt
ECHO.owner of the file is 'file.txt'>>file.txt
ECHO.data for this file is in C:\Users\'file.txt'>>file.txt

ECHO.之前写下你想要发送到任何扩展名的文件。 在您想要在该文件中写入什么之前,如果您只想保留一行,请写>,如果要在该文件中写更多行,请写>>

所以如果你有:

ECHO.thing>>file.txt
ECHO.thing2>file.txt

file.txt将如下所示:

thing2

我希望这会对你有所帮助。

P.S。:抱歉我的英语不好!

答案 1 :(得分:0)

你打算做什么不清楚。

您的代码似乎想要做的是将“customer = customer fr ... 01 toDate = 20101231”附加到每个现有的.TXT文件中。正确的语法是

@echo off 
for %%a in (*.txt) do ECHO customer=customer fromAddress=email@domain.com andOrAddress=OR toAddress=email@domain.com outputPath=E:\Exgest\customer\email@domain.com outputFormat=MIME customHeaders=true fromDate=20030901 toDate=20101231 >>"%%a"

应该在每个.txt文件的末尾添加额外的行。

请注意更改 - ECHO而非TYPE>>"%%a",因为元变量%%a将包含文件*.txt的文件名 - 以及“引号”确保正确处理"filenames containing spaces.txt"

答案 2 :(得分:0)

@ user2782162您需要编辑您的问题并更具体。 我根据您的想法创建了以下批次。

如果这是您想要的,请告诉我们? 另外......我确信@Magoo可以让这更简单(你是一个巫师)。

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET listloc=list.txt

:start
FOR /f "tokens=* delims= " %%a IN (%listloc%) DO CALL :process1 %%a
ECHO.
ECHO List finished - Press any key to close.
PAUSE >nul
GOTO :eof


:process1
SET fname=%2
IF "%2"=="" GOTO :eof
:process2
ECHO %1=%2 >>%fname%.txt
SHIFT
SHIFT
IF NOT "%2"=="" GOTO process2
GOTO :eof

这假设您的输入文件'list.txt'的排列方式如下所示...包含各个行的每个'新文件'的所有信息....

list.txt的内容

 customer=hello1 fromAddress=email1@domain.com andOrAddress=OR1 toAddress=email1@domain.com outputPath=E:\Exgest\customer\email@domain1.com outputFormat=MIME1 customHeaders=true1 fromDate=200309011 toDate=201012311
 customer=hello2 fromAddress=email2@domain.com andOrAddress=OR2 toAddress=email2@domain.com outputPath=E:\Exgest\customer\email@domain2.com outputFormat=MIME2 customHeaders=true2 fromDate=200309012 toDate=201012312
 customer=hello3 fromAddress=email3@domain.com andOrAddress=OR3 toAddress=email3@domain.com outputPath=E:\Exgest\customer\email@domain3.com outputFormat=MIME3 customHeaders=true3 fromDate=200309013 toDate=201012313

Batch将一次读取'list.txt'1行。 它将使用每行“customer”的值作为新文件的名称。

下面的示例显示了第一行的输出结果。

hello1.txt的内容

 customer=hello1 
 fromAddress=email1@domain.com 
 andOrAddress=OR1 
 toAddress=email1@domain.com 
 outputPath=E:\Exgest\customer\email@domain1.com 
 outputFormat=MIME1 
 customHeaders=true1 
 fromDate=200309011 
 toDate=201012311