我有一个文件夹,其中包含许多这样命名的文件:JBMA_23456.docx
,JMRI_21456.docx
,CM_22554.docx
,QUA_11224.docx
。如何为每个文件创建一个与该文件同名但没有.docx
文件扩展名的子文件夹?另外,我只想将文件名存储为变量。
例如,我需要从文档创建一个名为JBMA_23456
的子文件夹
JBMA_23456.docx
。谁能指出我正确的方向?
答案 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
它为每个文件创建一个新文件夹。随意问这是否不是您所期望的