从文件名创建文件夹列表

时间:2018-08-11 04:36:16

标签: batch-file

我有一个文件夹,其中包含许多这样命名的文件:JBMA_23456.docxJMRI_21456.docxCM_22554.docxQUA_11224.docx。如何为每个文件创建一个与该文件同名但没有.docx文件扩展名的子文件夹?另外,我只想将文件名存储为变量。

例如,我需要从文档创建一个名为JBMA_23456的子文件夹 JBMA_23456.docx。谁能指出我正确的方向?

3 个答案:

答案 0 :(得分:1)

@echo off
for %%A in (*.docx) do if not exist "%%~nA" md "%%~nA"

这将创建一个与每个.docx文件同名的文件夹。

for /?call /?中查看修饰符。 n修饰符是name

路径修饰符:

dpnx处于 d p ath, n 相同和e x 紧张的状态。

答案 1 :(得分:0)

这是一个示例批处理文件,它尝试执行您的问题中列出的任务:

@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion

Set "BaseDir=C:\Users\Compo\Desktop\test"
Set "FileExt=.docx"

For /F "Delims==" %%A In ('Set var[ 2^>Nul') Do Set "%%A="
Set "i=0"
For /F "Delims=" %%A In ('Where "%BaseDir%":*%FileExt% 2^>Nul') Do (Set /A i+=1
    Call Set "var[%%i%%]=%%~nA"
    If Exist "%%~dpA%%~nA\" (Echo Sub-Folder %%~nA already exists in %BaseDir%
    ) Else (Set /P "=Creating sub-folder %%~nA in %BaseDir%"<Nul
        MD "%%~dpA%%~nA">Nul 2>&1 && (Echo= was successful) || Echo= failed))
Set var[ 2>Nul
Pause

要使用它,首先要确保将保存文件的目录(不包括任何反斜杠)放在 = 之间和{strong> " 和第4行,以及单个文件扩展名(包括前置时间段 . )< / em>,类似于第5行。

答案 2 :(得分:-1)

不清楚您要的是什么...

无论如何,这是我编写的代码

echo off
chcp 65001
cls
for /f "usebackq delims=." %%0 in (`dir /b "*.docx"`) do (
set filename=%%0
md %filename%
)
cmd /k

它为每个文件创建一个新文件夹。随意问这是否不是您所期望的