【发布时间】:2019-03-04 01:33:41
【问题描述】:
我需要帮助将文件名或文件夹名分成两部分。
子文件夹中的所有文件始终使用相同的命名约定:
主文件夹/艺术家 - 标题/艺术家 - 标题.ext
我首先创建了一个批处理文件,它为视频文件写入.nfo 文件(递归)。一切正常,但我只是找不到在分隔符 - 之前和之后回显 part1(艺术家) 以具有 part2(标题) 的方法。
这是我现在拥有的:
@echo off
TITLE NFO creator Musicvideos
COLOR B
ECHO -------------------------------------------------------------------------
ECHO Create NFO for Musicvideos, all existing will be overwritten
ECHO Push key to Start
ECHO -------------------------------------------------------------------------
ECHO.
PAUSE > NUL
REM Ende Header
for /r %%a in (*.mkv *.avi *.mp4) do (
(
echo ^<?xml version="1.0" encoding="UTF-8" standalone="yes"?^>
echo ^<musicvideo^>
for %%b in ("%%~na") do echo ^ ^<title^>%%~b^</title^>
echo ^ ^<^!-- start test set attributes --^>
for %%b in ("%%~na") do echo ^ ^<path^>%~dp0^</path^>
for %%b in ("%%~na") do echo ^ ^<name^>%%~na^</name^>
for %%b in ("%%~na") do echo ^ ^<filenameandpath^>%%~a^</filenameandpath^>
for %%b in ("%%~na") do echo ^ ^<basepath^>%%~a^</basepath^>
for %%b in ("%%~na") do echo ^ ^<before^>^</before^>
REM for "tokens=1,2 delims= - " %%b in ("%%~na") do (
REM echo ^ ^<before^>^%%a</before^>
REM echo ^ ^<after^>^%%b</after^>
REM )
REM test end
echo ^ ^<rating^>^0.000000^</rating^>
echo ^ ^<userrating^>^8^</userrating^>
echo ^ ^<epbookmark^>^0.000000^</epbookmark^>
echo ^ ^<year^>^</year^>
echo ^ ^<track^>^-1^</track^>
echo ^ ^<album^>^</album^>
echo ^ ^<artist^>^</artist^>
echo ^ ^<genre^>^</genre^>
echo ^ ^<outline^>^</outline^>
echo ^ ^<plot^>^</plot^>
echo ^ ^<tagline^>^</tagline^>
echo ^ ^<thumb^>^</thumb^>
echo ^ ^<status^>^</status^>
echo ^ ^<studio^>^</studio^>
echo ^ ^<art^>
echo ^ ^<fanart^>%~dp0^%%~na^-fanart.jpg^</fanart^>
echo ^ ^<poster^>%~dp0^%%~na^-poster.jpg^</poster^>
echo ^ ^<artistthumb^>%~dp0^%%~na^-artistthumb.jpg^</artistthumb^>
echo ^ ^<banner^>%~dp0^%%~na^-banner.jpg^</banner^>
echo ^ ^<clearlogo^>%~dp0^%%~na^-clearlogo.png^</clearlogo^>
echo ^ ^<discart^>%~dp0^%%~na^-discart.png^</discart^>
echo ^ ^<landscape^>%~dp0^%%~na^-landscape.jpg^</landscape^>
echo ^ ^</art^>
echo ^</musicvideo^>
)>"%%~dpna.nfo"
)
ECHO.
ECHO Creatin is done
ECHO Push key to exit
ECHO.
PAUSE > NUL
【问题讨论】:
-
for /f分隔符仅限于单个字符,您可以通过常规变量使用字符串替换,首先将多个字符替换为单个不同的字符。 -
您在脚本中使用了一次
%~dp0,它指向批处理脚本的父目录;请注意,这可能与当前工作目录(for /R循环使用的目录)不同... -
@aschipfl :批处理将始终位于主文件夹中,并且打算从那里运行。因为它会在每个“给定”文件的每个子目录中写入一个 nfo.file 因为文件树结构是非常简单,永远不会改变-> MainFolder (with batch)\Artist -Title Folder\\Artist - Title.fileext 。没有更多的子文件夹,
-
为了安全起见,您应该将外部循环更改为:
for /R "%~dp0." %%a in (...) do (...)(因此无论您是从命令提示符运行批处理文件还是通过在资源管理器中双击其图标来运行批处理文件都没有区别)跨度>
标签: batch-file split