batch-file - 批处理脚本删除文件而不是移动
问题描述
我仍然是批处理脚本的初学者,所以如果可能的话,我希望得到比平时更多的解释来帮助我。
目的:
我编写了这个脚本来尝试根据文件名称中是否包含文件夹名称来移动文件。例如,我有一个名为“cow”的文件夹和一个名为“cow_5234.txt”的文件,该文件将被移动到该文件夹中。这样做的目的是将带有公司名称的文件从一个充满文件的凌乱文件夹移动到公司文件夹,所以我认为文件进入错误文件夹不会有太大问题。
问题:
我遇到的问题是许多应该传输到文件夹的文件被放错了位置。我在一个文件夹中有大约 3000 个文件以及 300 个文件夹和这个脚本。在我运行它之后,只有大约 100 个文件被放置到正确的文件夹中,而剩下 900 个文件(因为它们没有文件夹名称)而其余的则消失了。
我试图做的事情:
我已经检查并检查了文件夹名称的原始列表,这些都是正确的。然后我修改了脚本以将文件名输出到 .txt 文件而不是移动它。没有获得合理数量的文件,而是有 4000 个文件(我检查了行数)。其中一些文件中没有文件夹名称。然后,我提取了大约 200 个文件和 20 个文件夹的子集,并用它们运行了脚本。由于某种原因,只剩下 80 个文件,其中 1 个被放入了一个文件夹,虽然它没有一个与文件夹相似的字符,其余的就消失了。我完全不确定发生了什么。这是代码:
@echo off
dir /a:d /b > list.txt
for /F %%i in (list.txt) do call :process %%i
goto :eof
:process
set "search=%1"
for /f "eol=: delims=" %%F in ('dir /A:-D /b^|find "%search%"') do move /Y "%%F" "%search%"
goto :eof
编辑1:
正如评论中所建议的那样,我在代码块的末尾添加了一个“goto :eof”,但是问题仍然存在。
编辑2:
我没有在主函数的末尾添加“goto :eof”。感谢您的澄清!
解决方案
推荐阅读
- python - 使用 Pandas 在 Python 中减去时间戳值
- docker-compose - 对 docker-compose 端口的 curl 请求在 travis-ci 中挂起
- python - 在 Python 中,如何在等待可能出现的图像时等待特定时间?
- ios - 自定义 UIButton 背景颜色不起作用
- php - 如何将数组发送到 register.blade.php
- webgl - Webgl - 如何使镜面光不改变大小
- c# - 您如何随机选择文本文件中的一行,将其显示在标签上并从列表中删除?
- javascript - 试图将 MySQL 查询的结果放入 JavaScript 数组
- angular - 当我加载有关服务的数据时,mat-table 中的过滤器不起作用
- rust - 不知道如何使用 nom 的 dbg_dmp