首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何清理在.bat脚本中作为参数提供的文件路径(反斜杠/正斜杠)以避免语法错误

如何清理在.bat脚本中作为参数提供的文件路径(反斜杠/正斜杠)以避免语法错误
EN

Stack Overflow用户
提问于 2020-12-17 08:52:46
回答 1查看 39关注 0票数 2

我有一个使用ren重命名文件夹中所有文件的简单.bat脚本。输入参数是包含要重命名的文件的文件夹的路径。脚本有时会返回语法错误,我们将其追溯到这样一个事实:有时输入路径有正斜杠、反斜杠或两者的混合(有时以双正斜杠开头)。我们希望通过允许该脚本接受任何这些类型的路径,并在调用ren命令之前将该路径作为.bat脚本的一部分进行清理,从而使该脚本更加健壮。

所以我的问题是:在调用ren函数之前,有没有一个(一组)命令可以应用于文件路径参数(以下示例中的%1),以更正所有正斜杠/反斜杠,使其保持一致并避免语法错误?我没有太多使用.bat脚本的经验,所以任何代码示例都会很有帮助。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@echo off
setlocal ENABLEDELAYEDEXPANSION
for %%F in (%1*.nc) do (
   for /F "tokens=1-8 delims=_" %%a in ("%%~nF") do (
   ren "%%F" "%%a_%%b_%%c_%%d_%%e_%%g_%%f_%%h.nc"
   ) 
) 

更新:最后,只需要Magoo的最后一个建议,因为将%1更改为"%~f1"解决了斜杠问题。我还必须将%~f1\添加到ren命令的第一个参数中,因为否则它会在错误的文件夹中查找(第一个for发现文件没有问题,但ren命令在错误的文件夹中查找。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@echo off
setlocal ENABLEDELAYEDEXPANSION
for /F "delims=" %%F in ('dir /b /a-d "%~f1\*.nc"') do (
   for /F "tokens=1-8 delims=_" %%a in ("%%~nF") do (
   ren "%~f1\%%~nF.nc" "%%a_%%b_%%c_%%d_%%e_%%g_%%f_%%h.nc"
   ) 
) 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-17 09:32:37

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
set "corrected=%~1"
set "corrected=%corrected:/=\%"

然后使用%corrected%代替%1quote the filename,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for %%F in ("%corrected%*.nc") do (

如果%1始终是目录名,则添加

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if "%corrected:~-1%" neq "\" set "corrected=%corrected%\"

作为for行之前的第三个set行。

第一个set%1的值赋给一个变量corrected - ~删除所有括起来的引号。

第二个set将所有匹配:=之间的字符串更改为给定变量中=%之间的字符串,并将其赋值给第一个变量(可以是相同的变量,如本例)

如果使用了第三个set,则检查最后一个字符是否为\,如果不是,则附加一个\

filename-string的引号允许路径/filename中有空格,如果没有空格,则是无害的。

为了避免尝试重命名文件两次,而不是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for %%F in ("%corrected%*.nc") do (

使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for /F "delims=" %%F in ('dir /b /a-d "%corrected%*.nc"') do (

这将在内存中构建一个文件名列表,然后处理该列表。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65337387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文