batch-file - CMD:按文件夹结构对文件进行排序
问题描述
我正在尝试创建一个 BAT,它会自动将输入文件夹中的 ZIP 排序到相应的目标文件夹中。
所有 ZIP 都以序列号 001 File.zip、002 File.zip、003 File.zip 等开头。
目标文件夹根据相同的方案命名:001、002、003、...、999。
因此,如果 ZIP 进入输入文件夹,它应该自动分配到具有相同编号的相应目标文件夹。
但是由于目标文件夹最多为 999 我不想事先写下所有路径...
到目前为止,我的代码如下所示:
SET input=C:\Daten\Input
SET target=C:\Daten\Target
for /r %input% %%a in (*.zip) do (
Set FILE=%%~nxa
Set FILEWITHOUTEXT=%%~na
Set SPLITABLE_NAME=!FILEWITHOUTEXT:_= !
for %%t in (!SPLITABLE_NAME!) do set FIRSTTOKEN=%%t
)
copy /Y %%a %target%\!FIRSTTOKEN!\!FILE!
不幸的是,整个事情根本不起作用。
解决方案
根据 Stephan 的评论和一些额外的代码清理和最佳实践使用,您的代码应该如下所示。
:sort
SET "input=C:\Daten\Input"
SET "target=C:\Daten\Target"
for /r "%input%" %%a in (*.zip) do (
For /f "tokens=1 delims=_ " %%t in ("%%~na") do (
copy /Y "%%~a" "%target%\%%t\"
)
)
推荐阅读
- python - 如何单独更改按钮pygame上文本的不透明度?
- azure-devops - Azure Pipelines 在 NuGet 还原阶段失败
- node.js - TypeError: Cannot read property '__esModule' of undefined when /* webpackPrefetch: true */ when SSR with loadable-component and serverless
- c++ - 指针作为函数的参数
- oracle - 如何更改视图的数据类型
- android - 使用 Android 通知时服务启动错误
- c++ - 二分查找可以排序吗?
- android - 单击主页后阻止打开活动
- azure - 将事件网格订阅连接到单独的事件网格主题
- ag-grid - 如何对网格/矩阵/表格的两个标题进行列过滤(excel样式)