Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批处理脚本仅从给定文本文件的最后一行复制文件_Batch File_File Copying - Fatal编程技术网

Batch file 批处理脚本仅从给定文本文件的最后一行复制文件

Batch file 批处理脚本仅从给定文本文件的最后一行复制文件,batch-file,file-copying,Batch File,File Copying,我试图从一个文本文件(逐行)复制给定文件夹中的不同文件,并在行中使用一些特定的关键字,但它是从最后一行复制文件。我是批处理脚本新手,所以我不太了解批处理脚本的语法,我的代码是 @echo off setlocal disableDelayedExpansion mkdir events_sorted for /f "tokens=3-7" %%a in (input.txt) do set id=%%a-%%b-%%c-%%d%%e for /r /d %%i in (.) do (

我试图从一个文本文件(逐行)复制给定文件夹中的不同文件,并在行中使用一些特定的关键字,但它是从最后一行复制文件。我是批处理脚本新手,所以我不太了解批处理脚本的语法,我的代码是

@echo off
setlocal disableDelayedExpansion
mkdir events_sorted
for /f "tokens=3-7" %%a in (input.txt) do set id=%%a-%%b-%%c-%%d%%e

for /r /d %%i in (.) do (
    cd %%i
    copy "%id%-00S.*" "%CD%/events_sorted/"
 )

pause

Thanx

您需要将
for/R
循环嵌套到
for/F
循环中,方法是将
放在
do
之后,并将
放在
暂停之前的
末尾。此外,不要将行字符串存储在变量
id
中,只需直接在
copy
命令行中使用行字符串即可。此外,不要使用
cd%%i
,而是立即使用
%%i
,而不要使用
%cd%%
。以下是固定代码:

@echo关闭
setlocal EnableExtensions DisableDelayedExpansion
mkdir“已排序的事件”
对于/F“usebackq令牌=3-7”%%a in(“input.txt”)do(
对于(.)do中的/R/D%%i(
复制“%%a-%%b-%%c-%%d%%e-00S.*”“%%~i/events\u sorted/”
)
)
暂停
端部
退出/B

您需要将
for/R
循环嵌套到
for/F
循环中,方法是将
放在
do
之后,并将
放在
暂停之前的
末尾。此外,不要将行字符串存储在变量
id
中,只需直接在
copy
命令行中使用行字符串即可。此外,不要使用
cd%%i
,而是立即使用
%%i
,而不要使用
%cd%%
。以下是固定代码:

@echo关闭
setlocal EnableExtensions DisableDelayedExpansion
mkdir“已排序的事件”
对于/F“usebackq令牌=3-7”%%a in(“input.txt”)do(
对于(.)do中的/R/D%%i(
复制“%%a-%%b-%%c-%%d%%e-00S.*”“%%~i/events\u sorted/”
)
)
暂停
端部
退出/B

我尝试了嵌套for循环,但它甚至没有复制与此固定代码相同的单个文件。暂时删除
@echo off
并检查发生了什么;不要通过双击批处理文件的图标来运行批处理文件,打开
cmd
窗口,通过
cd/D
移动到父目录,然后通过键入批处理文件的名称来运行批处理文件,这样您就可以读取每个回显的命令和潜在的错误消息。由于我不知道您的目录结构、文件以及
input.txt的内容,在这一点上我不能做更多…问题是源文件在哪里?我尝试了嵌套for循环,但它甚至没有复制与此固定代码相同的单个文件。暂时删除
@echo off
,然后检查发生了什么;不要通过双击批处理文件的图标来运行批处理文件,打开
cmd
窗口,通过
cd/D
移动到父目录,然后通过键入批处理文件的名称来运行批处理文件,这样您就可以读取每个回显的命令和潜在的错误消息。由于我不知道您的目录结构、您的文件以及
input.txt
的内容,因此我无法在这一点上做更多的工作……问题还在于源文件位于何处?