更新子文件夹和文件重命名批处理脚本



这个脚本需要一些帮助

for /d %%D in ("*") do (
for %%F in ("%%D*.jpg") do (
ren "%%~dpF(*).txt" "(*) %%~nF.*"
)
)

这是原始脚本,这就是它的作用

Before
filename.jpg
(1).txt
Result
filename.jpg
(1) filename.txt

它从JPG文件中复制文件名并将其添加到TXT文件的文件名中

我一直在尝试做的是两件事
我想要添加一个受控的子文件夹阅读器到它,我想要在txt文件的某些点之间复制文件名

Before
filename.jpg
(1)(name).txt
Result
filename.jpg
(1) filename (name).txt

我已经尝试了10种不同的方法来实现这个目标,但由于某种原因,我不能

try this

FOR /f "delims=" %%q IN ('dir /b /s /a-d "Ready(*)(Name).txt"') DO call :label "%%q"
goto :eof
:Label
set "FILE=%~1"
for /d %%D in ("*") do (
for %%F in ("%%D*.jpg") do (
ren "%%~dpF(*)(Name).txt" "(*) %%~nF (*).*"
)
)

,我也删除了这个for /d %%D in ("*") do (
,并尝试这个

FOR /f "delims=" %%q IN ('dir /b /s /a-d "Ready(*)(Name).txt"') DO call :label "%%q"
goto :eof
:Label
set "FILE=%~1"
for %%F in ("*.jpg") do (
ren "%%~dpF%~1" "(*) %%~nF (*).*"
)

and try this

for /d %%D in ('dir /b /s /a-d "*"') do (
for %%F in ("%%D*.jpg") do (
ren "%%~dpF(*)(Name).txt" "(*) %%~nF (*).*"
)
)

谢谢你

@ECHO OFF
SETLOCAL
rem The following setting for the source directory is a name which include spaces to make sure
rem that the process works using such names. These will need to be changed to suit your situation.
SET "sourcedir=u:your files"
PUSHD "%sourcedir%"
for /d %%B in ("*") do (
for %%E in ("%%B*.jpg") do (
FOR /f "tokens=1,2delims=()" %%q IN ('dir /b /a-d "%%~dpnxB(*)(*).txt" 2^>nul') DO (
rem files matching "(*)(*).txt only
REN "%%~dpnxB(%%q)(%%r).txt" "(%%q) %%~nE (%%r).txt"
)
FOR /f "tokens=1*delims=()" %%q IN ('dir /b /a-d "%%~dpnxB(*).txt" 2^>nul') DO IF /i "%%r" equ ".txt" (
rem files matching "(*).txt only
REN "%%~dpnxB(%%q).txt" "(%%q) %%~nE.txt"
)
)
)
popd
GOTO :EOF

警告:这批是武装的。它将重命名文件。在应用于实际数据之前,始终针对测试目录进行验证。

%%B上的外部循环获取目录名。这一点也不奇怪。

%%E上的下一个循环获取.jpg名称。这一点也不奇怪。

%%q上的第一个循环查找符合模式(*)(*).txt.txt文件,并重新组装重命名所需的部分。

%%q上的第二个循环查看符合模式(*).txt.txt文件,其中可能包括刚刚重命名的与(*)(*).txt匹配的文件,现在是(*) jpgfilename (*).txt,所以这次%%r必须是.txt,以排除这些新重命名的文件。

我重复一遍
注意:这批货有武器。它将重命名文件。在应用于实际数据之前,始终针对测试目录进行验证。

相关内容

  • 没有找到相关文章

最新更新