在名称批处理脚本中移动带有空格的文件

时间:2015-03-20 16:17:37

标签: windows batch-file scripting cmd

所以我试图模仿Apple的一些功能

我目前正在处理的一个功能是能够选择单个或多个文件,然后通过“上下文菜单”创建一个“新文件夹”(指向通过FOR循环传递文件的批处理文件)然后移动文件进入那个“新文件夹”

我遇到的问题是我使用“robocopy”研究的文件名和空格,但发现它很棘手而且很棘手

到目前为止我的代码

@echo off
set cDir=%~dp1
set newFolder="%cDir%NewFolder"
md %newFolder%
echo.
:: get each selected file and echo
for %%I in (%*) do (
    echo %%I
    echo.
    echo %newFolder%
    move "%%I" "%newFolder%"
    echo.
)
pause

1 个答案:

答案 0 :(得分:1)

您修改过的代码也应该移动文件和文件夹。为了安全起见,这是我的代码变体。请注意setmdmove语句中的引用更改,但我再说一遍:您的(修改过的)引用变体也应该有效:

@echo off
set cDir=%~dp1
set "newFolder=%cDir%NewFolder"
md "%newFolder%"
echo.
:: get each selected file and echo
for %%I in (%*) do (
    echo %%I
    echo.
    echo %newFolder%
    move "%%~I" "%newFolder%\"
    echo.
)
pause

虽然move /?移动文件并重命名文件和目录,但源和目标可以是文件夹或单个文件({{3} },在我的Win-8上验证。

证明。

==>move "D:\Path\COCL\bu bu bu" "D:\Path\content\"
        1 dir(s) moved.

==>move "D:\Path\content\bu bu bu" "D:\Path\COCL\"
        1 dir(s) moved.

==>

下一个资源:resource