批处理文件,用于根据文件名的一部分从一台服务器复制文件到另一台服

时间:2012-07-27 18:19:00

标签: batch-file

我正在尝试创建一个批处理文件(通过Windows XP专业版)来复制文件名长度不同的2个文件(.zpl)。 ZPL文件与标签打印机代码有关。文件名如下:

FillXferDataPBHAMFill ###########。ZPL
FillFormatsPBHAMFill ############。ZPL

井号表示与要打印的特定标签/作业相关联的数字。这些数字在每个工作中是相同的从一个工作到下一个工作,数字的长度各不相同,而且总是在变化。我试图从中提取这些目录包含来自多个位置的ZPL文件,但是,我只想要BHAM文件。

批次将从以下位置复制:\ Server \ C:\ Directory1 \ Directory2 \ Directory3
要复制到:\ Server \ Directory1 \ Directory2

不确定这是否会使事情进一步复杂化,但批处理文件将从第3台机器运行。此外,我不需要每次都复制每个文件。每当发送新的打印作业时,主管将运行批处理以在最后X个时间内复制新的打印作业。 X是分钟。这是我到目前为止所拥有的......

@echo off
SETLOCAL enableExtensions enableDelayedExpansion

SET sourceDir=Server\C:\Directory1\Directory2\Directory3
SET targetDir=Server\Directory1\Directory2

FOR %%a (FillFormatsPBHAM*.bat) DO (
SET "filename=%%a"
SET "folder=%targetDir%"
XCOPY "%%a" !folder!
)

FOR %%b (FillXferDataPBHAM*.bat) DO (
SET "filename=%%b"
SET "folder=%targetDir%"
XCOPY "%%b" !folder!
)

:END
我为一篇冗长的帖子道歉;只是想尽可能彻底。我正在学习这一点,因为我对此一无所知。提前感谢您的任何帮助!!

StackOverFlow材料已审核:Reference1Reference2 - 过去一周我一直在寻找各地,这是迄今为止最有帮助的2个。

1 个答案:

答案 0 :(得分:1)

我看到了一些修复或改进BAT脚本的方法。

  1. FOR命令语法为FOR %%a IN (*.bat) DO (

  2. sourcedir变量设置为Server\C:\Directory1\Directory2\Directory3,这在Windows中不是正确的路径。

  3. 您初始化但不要在FOR循环和副本commnand中使用%sourcedir%variabe

    您应该使用pushd %sourcedir%命令更改当前驱动器和目录,或者在FOR命令中指定它。

  4. 您的FOR循环指定了一个永远不会使用的%filename%变量,您可以跳过此分配。

  5. 你FOR循环分配一个%文件夹%变量,该变量只在复制命令中使用,你可以跳过这个分配,只需使用%targetdir%

  6. 但是,要将所有文件从一个文件夹复制到另一个文件夹,您不需要FOR迭代所有文件,您可以直接复制它们。

  7. 所以,看看这个简单的脚本让你开始..

    SET sourceDir=\\servername\sharename\Directory1\Directory2\Directory3
    SET targetDir=\\anotherserver\sharename\Directory1\Directory2
    xcopy %sourceDir%\FillFormatsPBHAM*.bat %targetDir%
    xcopy %sourceDir%\FillXferDataPBHAM*.bat  %targetDir%