【发布时间】:2019-07-22 09:36:03
【问题描述】:
我有以下文件夹:
Apple_folder
Pear_folder
Tomatoes_folder
在Apple_folder 内,我有以下文件:
Extracted-Apple_1.txt
Extracted-Apple_2.txt
Extracted-Pear_1.txt
Extracted-Pear_2.txt
Extracted-Apple_3.txt
Extracted-Tomatoes_1.txt
如何将Extracted-Pear_1.txt、Extracted-Pear_2.txt、Extracted-Tomatoes_1.txt 移动到它们的相关文件夹中,即在Apple_folder 下保留包含apple 的文件名等
预期的Apple_folder 内容:
Extracted-Apple_1.txt
Extracted-Apple_2.txt
Extracted-Apple_3.txt
我还是批处理脚本的初学者,所以不知道如何进行?
for %%a in (*.txt) do (
echo %filename%
for /f "tokens=* delims=- _" %%f in (%filename%) do (
if tokens==Pear move Extracted-Pear*.txt "C:\Users\ABCD\Documents\Pear_folder\"
if tokens==Tomatoes move Extracted-Pear*.txt "C:\Users\ABCD\Documents\Tomatoes_folder\"
)
我正在使用此代码尝试重命名文件以避免覆盖目标文件夹中具有相似名称的文件。
setlocal enabledelayedexpansion
set /A counter=0
@echo off
for %%a in (*.txt) do (
set /A counter+=1
for /f "tokens=2 delims=-_" %%f in ("%%a") do (
move Extracted-%%f_*.txt "C:\Users\ABCD\Documents\%%f_folder\Extracted-%%~nf_moved_!counter!.txt"
)
)
只有一个文件被移动/重命名,然后得到一条错误消息
"Cannot move multiple files to a single file."
【问题讨论】:
-
再次阅读for /f 文档。尤其是看看页面底部的示例。您对
tokens和delims的理解似乎是错误的。 -
您的括号不平衡。我已对您的代码进行了格式化和缩进,以便您更容易注意到该问题。
-
感谢@LotPings,我需要做一些研究,因为我以前没有做过这种类型的操作。
-
感谢@Compo 的帮助。
标签: batch-file