如何从文本文件读取路径?

时间:2019-02-14 16:36:56

标签: batch-file

我有一个多行的.txt文件。每行都包含一个指向我的网络驱动器/计算机上的文件夹的路径:

  1. [NetworkDrive_PathToFolder1]
  2. [Computer_PathToFolder1]
  3. [NetworkDrive_PathToFolder2]
  4. [Computer_PathToFolder2]
  5. [NetworkDrive_PathToFolder3]
  6. [Computer_PathToFolder3]
  7. 等...

这个想法是要创建一个.bat文件,该文件将读取第1行和第2行并将[NetworkDrive_PathToFolder1]文件夹中的文件复制到文件夹[Computer_PathToFolder1]中,然后读取第3行和第4行并将[NetworkDrive_PathToFolder2]文件夹中的文件复制到文件夹[ Computer_PathToFolder2]等。 这将使我无需更改代码即可添加/删除路径。

我不确定.txt文件的外观。也许使用xml文件更好?

这适用于已连接网络驱动器的Windows 10计算机。 启动计算机时,我想将网络驱动器中的某些特定文件自动更新到计算机上的本地文件夹。

要映射网络驱动器,我宁愿使用PUSHD和POPD而不是NET USE,因为我不希望永久映射网络驱动器。

今天我有一个.txt文件,其中包含网络驱动器中文件夹的路径:

  1. [NetworkDrive_PathToFolder1]
  2. [NetworkDrive_PathToFolder2]
  3. [NetworkDrive_PathToFolder3]
  4. 等...

.bat文件中文件复制到的文件夹的路径。 但是,然后所有内容都被复制到我计算机的同一文件夹中。

FOR /F %%i IN (C:\UpdateFilesFromNetworkPaths.txt) DO (
NET USE L: /delete
NET USE L: %%i
xcopy L:\*.txt C:\FilesFromNetwork\ /d /y
)

此代码的结果: 文件夹[C:\ FilesFromNetwork]中不存在的每个.txt文件都将从文本文件[UpdateFilesFromNetworkPaths.txt]中的路径中复制。 如果文件存在,则复制文件(如果它是较新的版本)。

1 个答案:

答案 0 :(得分:0)

因此,根据您的帖子,您似乎正在尝试根据文本文件中的路径复制文件。所有两组(1-2、3-4、5-6)均包含源路径和目标路径。这个问题可以通过简单的for循环和简单的计数器来解决。

假设您的文本文件(.txt)在以下示例中为格式:

C:\PathToNetworkDriveFolder1
C:\PathToComputerFolder1
C:\PathToNetworkDriveFolder2
C:\PathToComputerFolder2
C:\PathToNetworkDriveFolder3
C:\PathToComputerFolder3

以下将是解决方案脚本:

@ECHO OFF
@Setlocal EnableDelayedExpansion
Set "Count=1"

Rem | Read The Text File Line By Line
FOR /F "tokens=*" %%A in ('Type "list.txt"') DO (

    Rem | Grabbed First Line
    IF "!Count!"=="1" (

        Rem | Add One To Count
        Set /a "Count=!Count!+1"

        Rem | Save Current Variable
        Set "NetworkDrivePath=%%A"

    Rem | Grabbed Second Line
    ) else (

        Rem | Subtract One To Count
        Set /a "Count=!Count!-1"

        Rem | Save Current Variable
        Set "ComputerDrivePath=%%A"

        Rem | Copy Files
        Echo "!NetworkDrivePath!" "!ComputerDrivePath!"

    )
)

Goto :EOF

请记住,我的示例使用list.txt。随意将其更改为您的示例或用法。如果您要使用多个文本文件,只需在开头添加另一个for循环即可搜索所有*.txt文件名。


对于我所有的脚本,我都添加了rem注释,以帮助您了解每个进程的工作情况。要获得有关任何命令的帮助,请在新窗口中执行以下操作:

  • set /?
  • for /?
  • if /?
  • ren /?
  • 等等。