【问题标题】:Batch script for making new dirs, named as part of filename and move the files in用于创建新目录的批处理脚本,命名为文件名的一部分并将文件移入
【发布时间】:2013-07-20 22:07:25
【问题描述】:

例如: 我有很多文件,在一个目录中命名如下:

东西1.jpg 东西1 (1).jpg 东西1 (2).jpg 东西2.jpg 东西2 (1).jpg 东西2 (2).jpg ...等等。

我希望批处理脚本将stuff1* 文件移动到名为stuff1 的子文件夹; stuff2* 文件到子文件夹,命名为stuff2 等。

我找到了这个批处理脚本:

@echo off
for /f "delims=" %%a in ('dir /b') do (
if not "%%~fa"=="%~f0" (
md "%%~na" 2>nul
if exist "%%a" move "%%~na.*" "%%~na"
)
)

但它为 stuff1 (1).jpgstuff1 (2).jpg 文件创建了单独的目录

编辑: stuff1stuff2 只是示例,它们可以是任何单字字符串。对不起我的英语不好

【问题讨论】:

    标签: windows batch-file cmd directory


    【解决方案1】:

    纯批次:

    @ECHO OFF &SETLOCAL
    SET "startfolder=test"
    
    CD /d %startfolder%
    FOR %%a IN (*.jpg) DO (
        FOR /f "delims=. " %%b IN ("%%~a") DO (
            ECHO MD "%%~b" 2>nul
            ECHO MOVE "%%~a" "%%~b"
        )
    )
    

    sed for Windows 为例:

    @ECHO OFF &SETLOCAL
    SET "startfolder=test"
    
    CD /d %startfolder%
    FOR %%a IN (*.jpg) DO (
        FOR /f %%b IN ('echo %%~a^|sed -r "s/(\w+).*/\1/"') DO (
            ECHO MD "%%~b" 2>nul
            ECHO MOVE "%%~a" "%%~b"
        )
    )
    

    .. 输出:

    >dir /b 测试 东西1 (1).jpg 东西1.jpg 东西10 (1).jpg 东西10.jpg 东西2 (1).jpg 东西2.jpg 东西20 (1).jpg 东西20.jpg >脚本 MD“东西1” 移动“stuff1 (1).jpg”“stuff1” MD“东西1” 移动“stuff1.jpg”“stuff1” MD“东西10” 移动“stuff10 (1).jpg”“stuff10” MD“东西10” 移动“stuff10.jpg”“stuff10” MD“东西2” 移动“stuff2 (1).jpg”“stuff2” MD“东西2” 移动“stuff2.jpg”“stuff2” MD“东西20” 移动“stuff20 (1).jpg”“stuff20” MD“东西20” 移动“stuff20.jpg”“stuff20”

    如果看起来不错,请查看您的输出并删除MDMove 之前的echo

    【讨论】:

    • 谢谢,但可能我没有解释清楚。 Stuff1 和 Stuff2 只是示例,它们可以是任何一个单词的字符串。抱歉英语不好
    • 如果您需要一个安全的单字字符串文件名解决方案,请查看我的sed 示例。这是这样的。
    【解决方案2】:

    如果对于“单字字符串”,您的意思是“在第一个点或空格之前的字符串”,那么下面的批处理文件会执行此操作。如果您的“单字字符串”可能被其他字符分隔,则将它们包含在 FOR 命令的 "delims=... 部分中(将空格留在最后)。

    @echo off
    for %%a in (*.*) do (
       for /F "delims=. " %%b in ("%%a") do (
          if not exist "%%b\" md "%%b"
          if exist "%%a" move "%%b*.*" "%%b"
       )
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-22
      • 2011-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多