Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 使用批处理文件通过网络复制文件_Batch File_Networking_Cmd_Xcopy - Fatal编程技术网

Batch file 使用批处理文件通过网络复制文件

Batch file 使用批处理文件通过网络复制文件,batch-file,networking,cmd,xcopy,Batch File,Networking,Cmd,Xcopy,每当运行上述批处理文件时,我都会遇到以下错误: CMD不支持将UNC路径作为当前目录 Ps-抱歉格式化…代码不会全部变成灰色:(而不是CD,可以使用PUSHD命令。请记住,内部PUSHD将执行网络使用并消耗操作系统的“驱动器号”。如果执行次数太多,系统将用完“驱动器号” 请记住在适当的时间POPD 更新:再看一遍,我怀疑你是否需要更改目录。将移动到新目录的文件存在于何处?需要进行更多分析。以下是一个批处理代码,它应该适用于你的任务: @ECHO OFF set /p TerminalName=

每当运行上述批处理文件时,我都会遇到以下错误:

CMD不支持将UNC路径作为当前目录


Ps-抱歉格式化…代码不会全部变成灰色:(

而不是
CD
,可以使用
PUSHD
命令。请记住,内部
PUSHD
将执行
网络使用
并消耗操作系统的“驱动器号”。如果执行次数太多,系统将用完“驱动器号”

请记住在适当的时间
POPD


更新:再看一遍,我怀疑你是否需要更改目录。将
移动到新目录的文件存在于何处?需要进行更多分析。

以下是一个批处理代码,它应该适用于你的任务:

@ECHO OFF

set /p TerminalName= Enter the PC you wish to relocate ECFs on: 

ECHO Do you wish to relocate the ECFs on %TerminalName% ?

PAUSE

IF NOT EXIST "\\%TerminalName%\c$\Program Files\Google" (

ECHO You don't have Google installed

) ELSE (

ECHO You have Google installed!
ECHO Relocating the ECF Files! Here we go...

    IF EXIST "\\%TerminalName%\c$\Program Files\Google" (

    ECHO The ECF Folder already exists..
    ECHO Moving ECFs now

    cd \\%TerminalName%\c$\Program Files\Google
    FOR %%f IN (*.ecf) DO move /y "%%f" "\\%TerminalName%\c$\Program Files\Google" 


    ) ELSE (

    ECHO No ECF Folder exists...Let's sort that out!
    MKDIR "\\%TerminalName%\c$\Program Files\Google"

    cd \\%TerminalName%\c$\Program Files\Google
    ECHO Moving ECFs now
    FOR %%f IN (*.ecf) DO move /y "%%f" "\\%TerminalName%\c$\Program Files\Google" 
    )

)


ECHO Finished!

PAUSE
您需要相应地设置
SourcePath
。并且您需要用您环境中正确的内容替换所有出现的
ECF_文件夹

使用命令MOVE移动文件,而不切换当前工作目录,因为这是不需要的。并且命令MOVE还支持通配符,因此不需要for循环

如果批处理文件的用户在批处理文件中输入了无效的终端名称,例如双引号、尖括号或其他具有特殊含义的字符,则部分使用延迟环境变量扩展。打开命令提示窗口并在此窗口中执行
set/?
,以了解延迟扩展的详细信息


有一次使用
!TerminalName!
和一次
!TargetPath!
代替
%TerminalName%
%TargetPath%
。在远程计算机上存在Google目录得到肯定验证后,应该可以安全地引用
TargetPath
,而不延迟扩展。

尝试将unc patsh映射为ode>net use
@npocmaka net use是否能够拾取变量,因为它将根据远程终端名称的不同而变化?嗨@Paul-他们将从\\RemoteLocation1(变量)\\c$\Program Files\Google移动到\\RemoteLocation2(变量)\\c$\Program Files\Google
@ECHO OFF
SETLOCAL EnableDelayedExpansion
SET /P "TerminalName=Enter the PC you wish to relocate ECFs on: "
ECHO Do you wish to relocate the ECFs on !TerminalName! ?
PAUSE

SET "SourcePath=\\RemoteComputer\\c$\Program Files\Google\ECF_Folder"
SET "TargetPath=\\!TerminalName!\c$\Program Files\Google"

IF NOT EXIST "!TargetPath!" (
    ECHO You don't have Google installed.
    GOTO EndMoveECF
)

ECHO You have Google installed!
ECHO Relocating the ECF files! Here we go...

IF EXIST "%TargetPath%\ECF_Folder" (
    ECHO The ECF folder already exists..
) ELSE (
    ECHO No ECF Folder exists... Let's sort that out!
    MKDIR "%TargetPath%\ECF_Folder"
    IF ERRORLEVEL 1 (
        ECHO Failed to create ECF folder "%TargetPath%\ECF_Folder".
        GOTO EndMoveECF
    )
)
ECHO Moving ECF files now ...
MOVE /Y "%SourcePath%\*" "%TargetPath%\ECF_Folder\"
ECHO Finished!

:EndMoveECF
ENDLOCAL
PAUSE