当文件夹名称包含点时,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"
同时选择N
ame 和eX
tension
【讨论】:
以上是关于当文件夹名称包含点时,BATCH“系统找不到文件”的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 上表包含点时生成错误的 FROM 子句导致 Sqoop 无效对象名称错误
Django - 当用户选择地图上的点时,如何以模式形式包含地图并将坐标保存到数据库?