Как прочитать путь из текстового файла? - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть файл .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
)

Результат из этого кода: все файлы .txt, которых нет в папке [C: \ FilesFromNetwork], будут скопированы изпути в текстовом файле [UpdateFilesFromNetworkPaths.txt].Если файл существует, скопируйте его, если это более новая версия.

1 Ответ

0 голосов
/ 14 февраля 2019

Итак, исходя из вашего поста, похоже, что вы пытаетесь копировать файлы на основе путей в текстовом файле.Все группы по две (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 /?
  • и т. Д.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...