当文件夹名称包含点时,BATCH“系统找不到文件”

Posted

技术标签:

【中文标题】当文件夹名称包含点时,BATCH“系统找不到文件”【英文标题】:BATCH "system cannot find file" when folder name contains dots 【发布时间】:2021-03-30 03:05:01 【问题描述】:

在我脚本的这一部分中,我使用 robocopy 将文件夹的内容复制到另一个文件夹中,但如果源文件夹的名称中有 1 个或多个点,则会失败:“系统找不到指定的文件。”

我也尝试过 move 和 xcopy 但同样的事情。有什么办法吗?

这是完整的脚本:

set currentfolder=UserData\
set Index=1
for /d %%D in (%currentfolder%*) do (
set "folderlist[!Index!]=%%~nD"
set /a Index+=1
)

set /a UBound=Index-1

for /l %%i in (1,1,%UBound%) do (
for %%f in ("!folderlist!") do (
echo;  %%i. !folderlist[%%i]!
))

    set /p FolderChoice= Now please select a folder : 

    robocopy "UserData\!folderlist[%FolderChoice%]!" "UserData\newfoldername" /IS /IT

【问题讨论】:

注意:对于 FOR,扩展名是从最后一个点到名称末尾的所有内容,独立于分配给循环变量的字符串是文件夹名还是文件名。文件夹名称也可以包含一个或多个点,尽管这很不寻常。因此,使用文件夹名称 %%~nxD 而不仅仅是 %%~nD 来引用不带路径的完整文件夹名称。 【参考方案1】:
set "folderlist[!Index!]=%%~nD"

应该是

set "folderlist[!Index!]=%%~nxD"

同时选择Name 和eXtension

【讨论】:

以上是关于当文件夹名称包含点时,BATCH“系统找不到文件”的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 上表包含点时生成错误的 FROM 子句导致 Sqoop 无效对象名称错误

当元素在标记名称中包含点时,Jquery 选择器不起作用

Batch For Loop - 从文件夹名称中删除文件

Django - 当用户选择地图上的点时,如何以模式形式包含地图并将坐标保存到数据库?

无法创建文件夹 - FileNotFoundError: [WinError 2] 系统找不到文件

win下用命令行 ren 重命名时提示 系统找不到文件