【问题标题】:Batch file to upload each numbered file to a different FTP folder将每个编号的文件上传到不同的 FTP 文件夹的批处理文件
【发布时间】:2015-05-29 04:20:41
【问题描述】:

我需要编写一个批处理文件,通过 FTP 将两个文件上传到不同的文件夹。

示例:filename_0001.txt 复制到 server1 上的 folder1 filename_0002 复制到 server1 上的 folder2。

目标文件的名称是固定的。

我当前的批处理文件仅上传编号较小的第一个文件 - 文件名的唯一区别是编号,每天都会更改。

user name >>script.txt
%1 >>script.txt (password as parameter to batch file)
put filename_????.txt folder1
ftp -s:script.txt [server name]

如何上传其他编号较大的文件?我想检查文件名,然后将它们放入脚本中。谁能告诉任何命令来做到这一点?

我需要这样的东西:

put filename_????+1.txt folder2

【问题讨论】:

  • 那么您的意见是什么?你得到一个像filename_0001.txt 这样的文件名作为你的脚本的输入(比如命令行参数?),你需要“计算”另一个名字?
  • 我已经编辑了这个问题,也许现在我想做什么更清楚了。
  • 所以文件夹中总是(只有)两个文件。文件名中的数字每次都不同。您需要将编号较小的文件(无论是什么)上传到server1/folder1,将编号较大的文件上传到server2/folder2。对吗?
  • 几乎正确。只有一台服务器而不是2台,有时只有一个文件,有时甚至三个。所以批处理文件应该这样做:
    put filename_0001.txt server1/folder1 put filename_0002.txt server1/folder2 put filename_0003.txt server1/folder3
  • folder1folder2folder3 还是文件夹名称中的数字以某种方式源自文件编号?

标签: batch-file file-upload upload ftp server


【解决方案1】:

准备一个文本文件 (folders.txt),其中包含要使用的文件夹的排序列表,例如:

folderA
folderB
folderC
folderD

从批处理文件中保存一个排序的文件列表以上传到另一个文件 (files.txt)。如问题Combining multiple text files into one 中所述将两个文件合并在一起。

代码如下:

@echo off
dir /ON /B filename_????.txt > files.txt

setlocal EnableDelayedExpansion

3< folders.txt (for /F "delims=" %%a in (files.txt) do (
   set /P FOLDER=<&3
   echo put %%a !FOLDER!
))

输出会是这样的:

put filename_4100.txt folderA
put filename_4101.txt folderB
put filename_4102.txt folderC
put filename_4103.txt folderD

当文件名中的位数不同时,它将不起作用,因为filename_10000.txt 将排在filename_9999.txt 之前。有关可能的改进,请参阅Naturally Sort Files in Batch

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-28
    • 2011-12-17
    • 1970-01-01
    • 2020-07-09
    • 2017-02-19
    • 1970-01-01
    相关资源
    最近更新 更多