首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用批处理自动化解析文件名

使用批处理自动化解析文件名
EN

Stack Overflow用户
提问于 2018-06-03 12:53:23
回答 2查看 1K关注 0票数 0

这也许很简单,但我不是计算机语言专家。我在网上找了将近3个小时的解决方案。

假设我的所有mp3文件的标题都是“Song.mp3的艺术家名称-标题”,我希望将其输出到一个包含以下内容的txt文件中:

艺人:

歌曲:的标题

如何将文件名解析为用连字符分隔的两个部分?为了归档目的,我一直试图使用批处理文件实现某种程度的自动化,下面是我的代码:

代码语言:javascript
复制
@echo off
for /r %%a in (*.mp3) do (
(
for %%b in ("%%~na") do echo ^Artist: %%~b
echo ^Song:
)>"%%~dpna.txt"
) 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-03 13:29:37

在PushD之后更改start文件夹以适应您的环境。

代码语言:javascript
复制
:: Q:\Test\2018\06\03\SO_50666632.cmd
@echo off
PushD "%USERPROFILE%\Music" || (Echo can't locate folder&Pause&exit /B 1)

for /r %%a in (*.mp3) do (
    if exist "%%~dpna.txt" (
        Echo "%%~dpna.txt" already present, skip
    ) else (
       for /f "tokens=1,*delims=-" %%b in ("%%~na") do (
           echo Artist: %%b
           echo Song  :%%c
       )>"%%~dpna.txt"
    )
)

在我的漫游器a上的示例输出:

代码语言:javascript
复制
> tree /F
Auflistung der Ordnerpfade
Volumeseriennummer : 5566-7788
A:.
│   Name of Artist - Title of Song.mp3
│   Name of Artist - Title of Song.txt
│
└───Music
        Survivor - Eye of the Tiger.mp3
        Survivor - Eye of the Tiger.txt


> type "Name of Artist - Title of Song.txt"
Artist: Name of Artist
Song  : Title of Song

> type "Music\Survivor - Eye of the Tiger.txt"
Artist: Survivor
Song  : Eye of the Tiger
票数 0
EN

Stack Overflow用户

发布于 2018-06-03 13:23:37

如何将文件名解析为用连字符分隔的两个部分?

我希望它输出到包含以下内容的txt文件中: 艺人:曲名:宋名

使用以下批处理文件作为起点:

代码语言:javascript
复制
@echo off
setlocal enabledelayedexpansion
for /f "tokens=1,2 delims=-" %%i in ('dir /b name*') do (
  echo Artist: %%i 
  echo Song: %%j
 )>>file.txt
endlocal

示例用法:

代码语言:javascript
复制
> dir name*
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test

03/06/2018  14:06                 0 Name of Artist - Title of Song.mp3
03/06/2018  14:07                 0 Name of Artist 1 - Title of Song 1.mp3
               2 File(s)              0 bytes
               0 Dir(s)  1,269,011,574,784 bytes free

> test

> type file.txt
Artist: Name of Artist
Song:  Title of Song.mp3
Artist: Name of Artist 1
Song:  Title of Song 1.mp3    
>

我希望它对每个mp3文件都有一个文本文件。这有可能吗?

是的,请使用以下批处理文件:

代码语言:javascript
复制
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in ('dir /b name*.mp3') do (
  set _filename=%%~dpna.txt
  for /f "tokens=1,2 delims=-" %%i in ("%%a") do (
    echo Artist: %%i 
    echo Song: %%j
    )>!_filename!
  )
endlocal

示例用法:

代码语言:javascript
复制
> dir *.mp3
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test

03/06/2018  14:06                 0 Name of Artist - Title of Song.mp3
03/06/2018  14:07                 0 Name of Artist 1 - Title of Song 1.mp3
               2 File(s)              0 bytes
               0 Dir(s)  1,269,022,654,464 bytes free

> test

> type name*.txt

Name of Artist - Title of Song.txt


Artist: Name of Artist 1
Song:  Title of Song 1.mp3

Name of Artist 1 - Title of Song 1.txt


Artist: Name of Artist 1
Song:  Title of Song 1.mp3
  • Windows命令行的An索引
  • Windows CMD命令的分类列表
  • 目录 -显示文件和子文件夹的列表。
  • 针对另一个命令的结果执行对于/f -循环命令。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50666632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档