为文件夹中的每个文件创建文件夹,并使用 cmd 或批处理从 CSV 命名文件夹
Posted
技术标签:
【中文标题】为文件夹中的每个文件创建文件夹,并使用 cmd 或批处理从 CSV 命名文件夹【英文标题】:Create folders for each file in the folder and name the folder from CSV using cmd or batch 【发布时间】:2020-12-19 09:02:05 【问题描述】:我的要求是:我将有一个文件夹中的文件列表,我将有一个 csv /excel 表,其中我将有 2 列
-
文件 ID
文件名(与文件夹中的文件名相同)。
现在我想为每个文件创建一个文件夹,但我想用文件 ID 命名文件夹,该文件 ID 是 CSV 文件名。
我尝试了下面的代码:
@echo off
for %%i in (*) do (
if not "%%~ni" == "organize" (
md "%%~ni" && move "%%~i" "%%~ni"
)
)
这是为每个文件创建文件夹,但文件夹名称取自文件名。
我需要的是: 我希望从 csv 文件中获取文件夹名称,在该文件中,文件名和文件 ID 之间的映射作为列。
【问题讨论】:
此页面的右上角是一个?
图标,选择它然后选择tour
链接,一旦你这样做了,按照建议然后编辑你的问题,使其成为主题。
【参考方案1】:
在 CMD 中这是一件相当简单的事情
@( SETLOCAL ENABLEDELAYEDEXPANSION
ECHO OFF
SET "SrcFile=C:\Some\folder\files.csv"
SET "RootFolder=C:\Path\To\Folder"
)
For /F "tokens=1* delims=," %%A IN ('
Type "%SrcFile%"
') DO (
IF EXIST "%RootFolder%\%%~B" (
IF NOT EXIST "%RootFolder%\%%~A\" ( MD "%RootFolder%\%%~A\" )
MOVE /Y "%RootFolder%\%%~B" "%RootFolder%\%%~A\%%~B"
)
)
【讨论】:
非常感谢 Ben Personick,你是冠军。我想我会经常需要你的帮助,直到我的学习阶段完成。 Ben,是否有理由使用单引号和type
ing 文件,而不是仅仅给出文件名并让for
阅读它?显然 (?) 您需要使用 usebackq
选项并将名称括在双引号中(以防它包含空格等)。这只是你的“风格”还是有一些使用type
的“角落案例”?以上是关于为文件夹中的每个文件创建文件夹,并使用 cmd 或批处理从 CSV 命名文件夹的主要内容,如果未能解决你的问题,请参考以下文章