繁体   English   中英

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

[英]Copying files over the network using Batch File

@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

每当运行上述批处理文件时,都会出现此错误:

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

Ps-抱歉,格式化...对于代码来说,它不会全部变成灰色:(

可以使用PUSHD命令代替CD 请记住,在内部PUSHD将进行NET USE并消耗OS中的“驱动器号”。 如果这样做太多次,系统将用完“驱动器号”。

请记住在适当的时间进行POPD

更新:再次查看此内容,我怀疑您是否需要更改目录。 MOVE到新目录的文件在哪里? 需要做更多的分析。

这是一个适合您的任务的批处理代码:

@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

您需要相应地设置SourcePath 而且,您需要用您环境中合适的任何东西替换所有出现的ECF_Folder

文件移动是通过命令MOVE完成的,无需切换当前工作目录,因为不需要这样做。 并且命令MOVE也支持通配符,因此不需要FOR循环。

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

曾经有一个!TerminalName! 然后一次!TargetPath! 代替%TerminalName%%TargetPath% 在对远程计算机上的Google目录存在进行了肯定验证之后,应可以安全地引用TargetPath而不会延迟扩展。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM