使用文件名的子字符串创建文件夹

Posted

技术标签:

【中文标题】使用文件名的子字符串创建文件夹【英文标题】:Create a folder using substring of filename 【发布时间】:2017-08-21 04:01:14 【问题描述】:

我想从我的文件名中获取两个子字符串以创建文件夹字符串。 我的文件名为“SM-SM-ABC_ab12 cd34_AA 11_abc123.txt” 这里“ab12 cd34”是第一个文件夹,“AA 11”是第二个文件夹 我已经编写了一个代码,但是在添加了@Compo 代码之后,我无法将文件移动到目录中。我想将多个文件移动到各自的文件夹中。 有人能帮忙解决什么问题吗?

@Echo Off

set Path1= d:\A
:: SDate=DAYMONTHYEAR FORMAT of Systemdate
echo %Path1%
set SDate=%date:~7,2%%date:~4,2%%date:~10,4%
echo %SDate%

::Variable for folder path

Pushd %Path1%
for %%i in (*.*) do SET "FPath=%%~ni"
For /F "Tokens=2-3 Delims=_" %%A In ("%FPath%") Do (
    Set "FoldOne=%%A"
    Set "FoldTwo=%%B"
if not exist "%Path1%\%FoldOne%\%FoldOne%\%SDate%" (
   mkdir "%Path1%\%FoldOne%\%FoldOne%\%SDate%" )
   move %Path1%\* "%Path1%\%FoldOne%\%FoldTwo%\%SDate%\"
echo test %Path1%
echo test %FPath%
)

GoTo :EOF

【问题讨论】:

【参考方案1】:

这是你想要达到的目标吗?

@Echo Off

Set "FPath=SM-SM-ABC_ab12cd34_AA11_abc123.txt"

For /F "Tokens=2-3 Delims=_" %%A In ("%FPath%") Do (
    Set "FoldOne=%%A"
    Set "FoldTwo=%%B")

Echo(%%FoldOne%%=%FoldOne%
Echo(%%FoldTwo%%=%FoldTwo%

Timeout -1
GoTo :EOF

[Edit /]以下代码可能会为您的更新需求提供解决方案:

@Echo Off
Set "Path1=D:\A"
If /I Not "%CD%"=="%Path1%" Pushd "%Path1%" 2>Nul || Exit/B
For /F "EOL=L" %%A In ('WMIC OS GET LocalDateTime') Do For %%B In (%%~nA
) Do Set "SDate=%%B"
Set "SDate=%SDate:~6,2%%SDate:~4,2%%SDate:~,4%"
For %%A In ("*_*_*_*.*") Do Call :Sub "%%A"
Timeout -1
GoTo :EOF

:Sub
For /F "Tokens=2-3 Delims=_" %%A In (%1) Do If Not "%%A"=="" If Not "%%B"=="" (
    If Not Exist "%%A\%%B\%SDate%\" MD "%%A\%%B\%SDate%"
    Move %1 "%%A\%%B\%SDate%")

【讨论】:

宾果游戏...!但我有些怀疑。你能解释一下..你是如何在B中传递文件夹两个名称的。如果我有多个格式相同的文件,它也适用于单个文件。 我将文件名分成四个标记,每个标记用下划线分隔。令牌1=SM-SM-ABC,令牌2=ab12cd34,令牌3=AA11,令牌4=abc123.txt。我询问了令牌 2 和 3,它们实际上是 %%A 和 %%B。 嘿@Co​​mpo 谢谢。我对我的问题进行了更改。并使用了你的脚本。请您再次检查并提供帮助吗? 我提供了一个附加但未经测试的解决方案,以响应您更新的要求。 嗨@Compo 感谢您的回复。我几乎不使用脚本。但遇到了一些愚蠢的错误。你能检查一下这个链接吗***.com/questions/43114274/…

以上是关于使用文件名的子字符串创建文件夹的主要内容,如果未能解决你的问题,请参考以下文章

Renci SSH.NET:是不是可以创建一个包含不存在的子文件夹的文件夹

批处理:从文件名(子字符串)创建文件夹

MS Access 365 - 创建包含链接文件的子表单

在 laravel 5 的子文件夹下创建控制器的正确方法

在文档目录的子文件夹中创建 sqlite 数据库失败

Boost Property ptree:boost write_xml 在 xml 文件的子元素中添加 unicode 0x0 字符