簡體   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