cmd根据文件名创建文件夹并移动文件到创建的文件夹内

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cmd根据文件名创建文件夹并移动文件到创建的文件夹内相关的知识,希望对你有一定的参考价值。

我有几部电影,要求是cmd直接获取电影文件名称,自动创建文件夹并移动电影至新创建的文件夹内,最好做成批处理,即移动电影文件至bat 自动生成并移动。。谢谢!

记事本另存为xxx.bat,编码选ANSI,跟多个文件放一起运行
@echo off
rem 根据文件名将文件移动进以该文件名命名的文件夹里
set #=Any question&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$% %z%
cd /d "%~dp0"
for /f "delims=" %%a in ('dir /a-d/b') do (
if "%%~nxa" neq "%~nx0" (
if not exist "%%~na\" md "%%~na\"
echo;"%%a" --^> "%%~na\"
move "%%a" "%%~na\"
)
)
echo;%#% +%$%%$% %z%
pause
参考技术A @echo off & title 移动文件到以文件名命名的文件夹内 By 依梦琴瑶

if not "%~1"=="" (
call :MvFile "%~1"
) else (
goto Input
)

:End
pause
exit

:Input
echo 请输入要移动的文件路径:
set /p Src=

call :MvFile "%Src%"
goto End

:MvFile
if not exist "%~dp1%~n1" md "%~dp1%~n1"
move "%~1" "%~dp1%~n1\"
goto :eof追问

还稍微有一点点瑕疵,能批量操作么?

追答

如果需要批量操作,那么就不需要拖到文件到bat脚本上进行处理了。

而是写一个直接双击运行脚本后,就处理目录中所有视频文件。

追问

能写一个这种的么, - - 我小白。。。。 目录用X:表示就行

追答

@echo off & title 批量移动文件到文件名文件夹内 By 依梦琴瑶

::设置要移动的视频文件后缀
set Ext=*.mp4,*.wmv,*.avi,*.flv,*.f4v,*.mkv,*.3gp,*.rm,*.rmvb

::设置要处理的文件夹路径,当前目录请留空
set SrcDir=

if defined SrcDir cd /d "%SrcDir%"

for /f "delims=" %%a in ('dir /a-d/b %Ext%') do (
if not exist "%%~na" md "%%~na"
move "%%~a" "%%~na\"
)

pause

本回答被提问者采纳

为文件夹中的每个文件创建文件夹,并使用 cmd 或批处理从 CSV 命名文件夹

【中文标题】为文件夹中的每个文件创建文件夹,并使用 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,是否有理由使用单引号和typeing 文件,而不是仅仅给出文件名并让for 阅读它?显然 (?) 您需要使用 usebackq 选项并将名称括在双引号中(以防它包含空格等)。这只是你的“风格”还是有一些使用type 的“角落案例”?

以上是关于cmd根据文件名创建文件夹并移动文件到创建的文件夹内的主要内容,如果未能解决你的问题,请参考以下文章

CMD/FTP 使用到今天的日期创建文件夹并将 ftp 下载连接到创建的文件夹

请模拟一下win10的cmd

为文件夹中的每个文件创建文件夹,并使用 cmd 或批处理从 CSV 命名文件夹

如何创建与用户配置文件同名的文件夹不包括子文件夹或数据只需选择名称并使用 cmd 在另一个驱动器中创建文件夹

如何为apache提供cmd权限?

CMD指令和Linux指令