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,是否有理由使用单引号和type
ing 文件,而不是仅仅给出文件名并让for
阅读它?显然 (?) 您需要使用 usebackq
选项并将名称括在双引号中(以防它包含空格等)。这只是你的“风格”还是有一些使用type
的“角落案例”?以上是关于cmd根据文件名创建文件夹并移动文件到创建的文件夹内的主要内容,如果未能解决你的问题,请参考以下文章
CMD/FTP 使用到今天的日期创建文件夹并将 ftp 下载连接到创建的文件夹
为文件夹中的每个文件创建文件夹,并使用 cmd 或批处理从 CSV 命名文件夹