在Windows 10(cmd)中,我试图从名称中包含空格字符的子文件夹复制文件。
1.首先我试着用引号:
FROM jfloff/alpine-python:2.7
COPY "Folder 1/File.txt" "Dir 1"
错误消息:
无法处理**"\“文件夹”**:查找匹配的双引号时出现意外的语句结尾
1.“JSON”格式(跳过第一行):
COPY ["Folder 1/File.txt" "Dir 1"]
错误消息:
无法处理**"[\“文件夹”**:查找匹配的双引号时出现意外的语句结尾
1.尝试使用单个反斜杠进行转义:
COPY "Folder\ 1/File.txt" "Dir\ 1"
错误消息:
无法处理**"\“文件夹\"**:查找匹配的双引号时出现意外的语句结尾
1.尝试使用双反斜杠进行转义:
COPY "Folder\\ 1/File.txt" "Dir\\ 1"
错误消息:
无法处理**"“文件夹\\":查找匹配的双引号时出现意外的语句结尾
1.还尝试了使用%20**代替空格的建议:
COPY ["Folder%201/File.txt" "Dir%201"]
错误消息:
复制失败:无源文件
1.转义符替换:
# escape=`
COPY "Folder` 1/File.txt" "Dir 1"
错误消息:
无法处理**"\“文件夹”'**:查找匹配的双引号时出现意外的语句结尾
1.相同,但不加引号:
#escape=`
COPY Folder` 1/File.txt Dir` 1
错误消息:
复制失败:文件夹**:没有这样的文件或目录
1.使用tar归档文件打包/解包的方法(我不喜欢这个想法)。
应该可以吧?
3条答案
按热度按时间t98cgbkg1#
也许你可以使用
ARG
来帮助你,就像这样:停靠文件:
顺便说一句,如果你真的想把它当作一个文件夹,必须在
Dir 1
的末尾添加一个/
。而且,JSON格式也是可以的,只是你漏掉了
,
,它应该是:请更新您的意见:
在官方指南中,它说:
当复制包含特殊字符(如[和])的文件或目录时,您需要遵循Golang规则对这些路径进行转义,以防止它们被视为匹配模式。
因此,对于您的情况,它应该是:
或者:
mccptt672#
我同意从Docker获取具有特殊字符的文件是很烦人的,我有过类似的经历,经过几个小时的尝试和错误,我想出了这个简单的解决方案,从那时起我现在就在使用。
tar/zip文件,然后“docker cp”他们很容易,而不必担心几十个[]'"。
容器计算机中的tar文件:
然后将它们复制到Windows计算机的本地目录中。
在windows运行中打开cmd
检查文件是否已在d:/TARGETDIR/中传输
5lhxktic3#
解决方案如下:
Docker更新了它的
COPY
命令。所以你可以使用括号,你的文件名可以有空格。在这里阅读更多(官方文档)