首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过批处理文件从列表复制文件的问题

通过批处理文件从列表复制文件的问题
EN

Stack Overflow用户
提问于 2019-05-10 17:50:33
回答 2查看 40关注 0票数 0

我从系统中得到了一个文本文件--在这个文件中有文件名(每行一个文件名)--现在有了一个批处理文件--这个列表中的每一行(文件名)都应该在一个目录中进行搜索,并复制到另一个目录中。

我找到了这个,它几乎是有效的:

代码语言:javascript
运行
复制
@echo off &setlocal
set "sourceRoot=C:\Users\test\Desktop\COPY_TEST\originale"
set "sourceList=C:\Users\test\Desktop\COPY_TEST\DBLIST.TXT"
set "destFolder=C:\Users\test\Desktop\COPY_TEST\kopiert"

for /f "delim=" %%i in ('dir /a-d /b /s "%sourceRoot%\*.pdf"^|findstr /ig:"%sourceList%"') do (
  copy "%%~i" "%destFolder%\"
)
ECHO "Ausgabe abgeschlossen"
PAUSE

如果列表如下所示,则可以执行此操作:

代码语言:javascript
运行
复制
filename1
filename2
....

但是从另一个系统我得到的列表是这样的:

代码语言:javascript
运行
复制
filename1;
filename2;
....

ANd现在我必须编辑搜索词,并为其添加一个特定的词-原始:

代码语言:javascript
运行
复制
filename1;

但应该搜索它:

代码语言:javascript
运行
复制
filename1_DE

因此,从列表中的搜索词中,应该去掉最后一个字符";“,并添加词"_DE”。不应该只更改列表中的搜索词。

这有可能吗?

非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-11 18:18:50

感谢您的回答-我将我的版本更改为以下版本,它适用于我:)

代码语言:javascript
运行
复制
@echo off &setlocal
set "sourceRoot=C:\Users\offic\Desktop\COPY_TEST\originale"
set "sourceList=C:\Users\offic\Desktop\COPY_TEST\DBLIST.TXT"
set "destFolder=C:\Users\offic\Desktop\COPY_TEST\kopiert"
set "sprache=_EN"

FOR /f "tokens=1 delims=;" %%i IN ('FINDSTR . "%sourceList%"') DO (
    copy "%sourceRoot%\%%~i%sprache%.pdf" "%destFolder%\"
)

ECHO "Ausgabe abgeschlossen"
PAUSE
票数 0
EN

Stack Overflow用户

发布于 2019-05-11 17:51:00

for /?解释了变量的扩展,但简而言之,一个文件可以被分成几个部分,扩展到元变量上。举个例子,如果我们有一个文件的字符串:

代码语言:javascript
运行
复制
D:\work\file1.txt

我们可以运行一个for循环来获取上面的字符串或字符串的一部分:

代码语言:javascript
运行
复制
for %%i in (c:\work\file1.txt) do echo %%i

将与D:\work\file1.txt呼应

但是我们现在可以使用诸如drive,path,name,extension等东西来扩展%%i。所以下面是一个简单的例子,你可以按原样复制它并保存为批处理文件,然后自己测试它:

代码语言:javascript
运行
复制
@echo off
for %%i in ("c:\work\file1.txt") do (
   echo Full string and retain double quotes: %%i
   echo Full string but remove double quotes: %%~i
   echo Drive only: %%~di
   echo Path only: %%~pi
   echo Filename only: %%~ni
   echo Extension only: %%~xi
   echo Combination of drive and path: %%~dpi
   echo Combination name and extension: %%~nxi
   echo adding text between name %%~ni and extension %%~xi as: %%~niTEXT%%~xi
)

因此,根据上面的解释,您只需使用名称、添加文本并使用扩展名连接即可。

代码语言:javascript
运行
复制
copy "%%~i" "%destFolder%\%%~ni_DE%%~xi
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56075031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档