简短的回答
如果当前目录包含文件名遵循相同模式DSC_XXXX.jpg
(其中XXXX
是数字)的图片和名为Technical.txt
包含其中一些数字的文件,则以下命令将复制到该Technical
文件夹(假设它存在于当前目录中)所有文件Technical.txt
文件中提供了一个数字:
Get-Content Technical.txt | ForEach-Object { Copy-Item "DSC_$_.jpg" Technical }
如果Technical.txt
和图片文件和Technical
目录不在当前目录中,则必须提供完整或相对路径,例如:
Get-Content c:\path1\to\Technical.txt | ForEach-Object { Copy-Item "c:\path2\to\pictures\DSC_$_.jpg" c:\path3\to\Technical }
说明
"DSC_$_.jpg"
命令中的表达式用于根据从Technical.txt
文件读取的数字生成图片文件名,该文件是当前管道对象(即$_
)。它只是添加DSC_
作为前缀和.jpg
扩展名。
- Get-Content读取
Technical.txt
文件的内容。
- ForEach-Object
{}
为管道中的每个对象执行其脚本块参数(用大括号括起来,即),在这种情况下,返回的每行文本Get-Content
。
测试此解决方案(在线或本地)
最简单的方法是在线尝试此解决方案。
否则,可以使用以下代码片段在当前目录中创建一个test
文件夹,其中包含一个示例Technical.txt
文件和伪图片文件,该文件遵循本答案中提到的模式以及一个空Technical
目录(注意:如果已经存在,则必须更改.\test
为其他内容test
在工作目录中有一个文件夹:
mkdir -ErrorAction SilentlyContinue .\test\Technical
Out-File .\test\DSC_4811.jpg; Out-File .\test\DSC_4812.jpg; Out-File .\test\DSC_4813.jpg;
Out-File .\test\DSC_4814.jpg; Out-File .\test\DSC_4819.jpg; Out-File .\test\DSC_4820.jpg;
"4811`n4819`n4820" > .\test\Technical.txt
(在第三行中,`n
表示行尾字符(back-tick(`
)是PowerShell中的转义字符)。
它生成以下文件:
.\test\DSC_4811.jpg .\test\DSC_4812.jpg .\test\DSC_4813.jpg
.\test\DSC_4814.jpg .\test\DSC_4819.jpg .\test\DSC_4820.jpg
.\test\Technical.txt
在作为答案提供的命令执行(Get-Content .\test\Technical.txt | ForEach-Object { Copy-Item ".\test\DSC_$_.jpg" .\test\Technical }
)后,文件是:
.\test\DSC_4811.jpg .\test\DSC_4812.jpg .\test\DSC_4813.jpg
.\test\DSC_4814.jpg .\test\DSC_4819.jpg .\test\DSC_4820.jpg
.\test\Technical.txt
.\test\Technical\DSC_4811.jpg .\test\Technical\DSC_4819.jpg .\test\Technical\DSC_4820.jpg
清理:
ri -Recurse .\test