Windows批处理文件 - 一次处理一个文件

时间:2014-07-09 13:43:21

标签: windows batch-file

奇怪的问题 - 但它让我有点疯狂。我有一个目录,可以通过FTP转储多个文件,然后我需要一次处理它们。所以基本上在这个目录中我可以有1.txt,2.txt,3.txt等,然后我需要:

将文件复制到存档(如果存在复制到存档)

一次一个地将文件移动到一个特定的文件名 - data.txt< ---这就是让我感觉到的

使用特定文件名(data.txt)在旧版后端系统客户端上运行命令

使用data.txt

在旧版客户端上运行另一个命令

删除data.txt

转到下一个文件并重复

到目前为止,我已经尝试了几种do循环方法而没有任何运气 - 他们都试图将多个文件重命名为一个文件,这只会让我失望。我很久以前就放弃了批处理文件,但令人讨厌的是,这个应用程序必须使用Windows,并启动Server 2003。

编辑:这是我尝试过的 -

  1. 这可以一次执行一个文件:

    如果存在c:\ jail \ ftp * .txt copy c:\ jail \ ftp * .txt w:\ scans \ archive * .txt
    如果存在c:\ jail \ ftp * .txt移动c:\ jail \ ftp * .txt w:\ data.txt
    如果存在w:\ data.txt C:\ temp \ rmtcmdb.exe
    如果存在w:\ data.txt del w:\ data.txt

  2. 我尝试了多个for循环但没有成功,这是最新的(注意 - 我只是试图通过这个移动阶段,一旦我完成了我将添加其余的):

    setlocal ENABLEDELAYEDEXPANSION
    FOR / f %% a IN(“c:\ jail \ ftp \”)DO(
      CALL SET / A x =!x! +1
       如果!x! == 1(
       CALL复制%% a w:\ scans \ archive * .txt
       CALL移动%% a w:\ data.txt
       )
      )

  3. 我也尝试了一些非常基本的for循环,并且再一次 - 没有任何东西超越移动阶段。

    有什么建议吗?

1 个答案:

答案 0 :(得分:0)

@echo off

    setlocal enableextensions

    for %%a in ("c:\jail\ftp*.txt") do (

        set "fileName=%%~na"
        setlocal enabledelayedexpansion
        copy "%%~fa" "w:\scans\!fileName:*ftp=archive!%%~xa"
        endlocal

        move /y "%%~fa" "w:\data.txt"

        start "" /wait "c:\temp\rmtcmdb.exe"

        if exist "w:\data.txt" del /s "w:\data.txt" >nul 2>nul 
    )