这个脚本需要一些帮助
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
,以排除这些新重命名的文件。
我重复一遍
注意:这批货有武器。它将重命名文件。在应用于实际数据之前,始终针对测试目录进行验证。