重命名文件名中带有空格和点的文件 [英] Renaming files with spaces and dots in the filename

查看:145
本文介绍了重命名文件名中带有空格和点的文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在制作一个具有拖放功能的简单* bat文件,用于替换下划线(_)的空格()和点(.).

I'm making a simple *bat file with drag/drop ability for replacing white spaces( ) and dots(.) for underscores(_).

我认为这应该可以,但是不能:

I think this should work, but it doesn't:

@ECHO OFF
setlocal enabledelayedexpansion
FOR %%f IN (%*) DO (
set filename=%%~nj
set filename=!filename:.=_!
set filename=!filename: =_!
if not "!filename!"=="%%~nf" RENAME "%%f" "!filename!%%~xf"
)

你知道发生了什么吗?

推荐答案

尝试一下:


@ECHO OFF &setlocal

FOR %%f IN (%*) DO (
set "oldname=%%~ff"
set "oldfname=%%~nf"
set "extension=%%~xf"
setlocal enabledelayedexpansion
set "filename=!oldfname:.=_!"
set "filename=!filename: =_!"
if not "!filename!"=="!oldfname!" RENAME "!oldname!" "!filename!!extension!"
endlocal
)

set的分配放在双引号中,以保护代码免受丑陋字符的侵害.稍后在for循环中设置delayed expansion,以在文件名中保存感叹号和脱字符号.

Put the assignment of set in double quotes to protect your code from ugly characters. Set delayed expansion later in the for loop to save exclamation marks and carets in file names.

这篇关于重命名文件名中带有空格和点的文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆