如何从多个文件中删除前缀?
How to remove a prefix from multiple files?
我下载了很多名为 [site.com] filename.mp4
的视频,我想删除前缀,以便它们被命名为 filename.mp4
。
我尝试了一个包含以下代码的批处理文件:
ren "[site.com] *.mp4" "///////////*.mp4"
但结果是 .com] filename.mp4
并且无法重命名超出点的任何内容,有什么想法吗?
通过模式替换使用参数扩展。
f='[site.com] filename.mp4'
mv "$f" "${f/\[site\.com\] /}"
即使 Windows 系统也可以执行 Bash.
http://www.mingw.org/wiki/msys
这是一个 for 循环:
for f in *.mp4; then
mv "$f" "${f/\[site\.com\] /}"
done
使用 for
循环拆分名称中的 space。
@echo off
:: Pass the file name in as an argument.
:: Split the full path into a directory and filename in case the folder has a space too
set "filepath=%~dp1"
set "filename=%~nx1"
:: Jump into the hosting directory, split the file name after the first space, and jump out
pushd %filepath%
for /f "tokens=1,*" %%A in ("%filename%") do ren "%filename%" "%%B"
popd
@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
FOR /f "tokens=1*delims=]" %%a IN (
'dir /b /a-d "%sourcedir%\*" '
) DO IF "%%b" neq "" (
FOR /f "tokens=*" %%h IN ("%%b") DO ECHO(REN "%sourcedir%\%%a]%%b" "%%h"
)
GOTO :EOF
您需要更改 sourcedir
的设置以适合您的情况。
所需的 REN 命令仅 ECHO
ed 用于测试目的。 确认命令正确后,将ECHO(REN
更改为REN
以实际重命名文件。
执行源目录的目录扫描,在 /b
基本模式 /a-d
中没有目录,并对找到的每个文件名进行标记 - 第一个 ]
到 [=18= 之前的部分] 余数为 %%b
.
如果 %%b
不为空(即不包含 ]
)则什么都不做,然后使用默认标记集(包括 space)和 tokens=0
将前导 space 从 %%b
剥离为 %%h
,然后构建原始文件名并重命名。
为了完整起见,一个 cmd.exe 替代方案:
For %A In ("*] *.*") Do @(Set "_=%A"&Call Ren "%A" "%_:*] =%")
我下载了很多名为 [site.com] filename.mp4
的视频,我想删除前缀,以便它们被命名为 filename.mp4
。
我尝试了一个包含以下代码的批处理文件:
ren "[site.com] *.mp4" "///////////*.mp4"
但结果是 .com] filename.mp4
并且无法重命名超出点的任何内容,有什么想法吗?
通过模式替换使用参数扩展。
f='[site.com] filename.mp4'
mv "$f" "${f/\[site\.com\] /}"
即使 Windows 系统也可以执行 Bash.
http://www.mingw.org/wiki/msys
这是一个 for 循环:
for f in *.mp4; then
mv "$f" "${f/\[site\.com\] /}"
done
使用 for
循环拆分名称中的 space。
@echo off
:: Pass the file name in as an argument.
:: Split the full path into a directory and filename in case the folder has a space too
set "filepath=%~dp1"
set "filename=%~nx1"
:: Jump into the hosting directory, split the file name after the first space, and jump out
pushd %filepath%
for /f "tokens=1,*" %%A in ("%filename%") do ren "%filename%" "%%B"
popd
@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
FOR /f "tokens=1*delims=]" %%a IN (
'dir /b /a-d "%sourcedir%\*" '
) DO IF "%%b" neq "" (
FOR /f "tokens=*" %%h IN ("%%b") DO ECHO(REN "%sourcedir%\%%a]%%b" "%%h"
)
GOTO :EOF
您需要更改 sourcedir
的设置以适合您的情况。
所需的 REN 命令仅 ECHO
ed 用于测试目的。 确认命令正确后,将ECHO(REN
更改为REN
以实际重命名文件。
执行源目录的目录扫描,在 /b
基本模式 /a-d
中没有目录,并对找到的每个文件名进行标记 - 第一个 ]
到 [=18= 之前的部分] 余数为 %%b
.
如果 %%b
不为空(即不包含 ]
)则什么都不做,然后使用默认标记集(包括 space)和 tokens=0
将前导 space 从 %%b
剥离为 %%h
,然后构建原始文件名并重命名。
为了完整起见,一个 cmd.exe 替代方案:
For %A In ("*] *.*") Do @(Set "_=%A"&Call Ren "%A" "%_:*] =%")