Как написать пакетный скрипт для проверки нескольких папок и папок внутри папки и установить переменные в файлах csv? - PullRequest
0 голосов
/ 03 апреля 2020

Мне нужно написать пакетный скрипт для go внутри нескольких папок и папок внутри папки, установить файлы CSV внутри нее и установить для нее переменную.

моя структура папок

c:\data\client1\data1.csv
c:\data\client1\data2.csv
c:\data\client1\config\env.csv

c:\data\client2\data1.csv
c:\data\client2\data2.csv
c:\data\client2\config\env.csv

так вот, у меня есть много папок клиентов с папкой конфигурации внутри нее и некоторыми данными CSV

, теперь я должен использовать несколько циклов для go внутри "c: \ data \" и проверьте папку client1, и внутри мне нужно установить var = data1.csv и var = data2.csv, используя для l oop, затем мне нужно go внутри папки конфигурации и установить envs = env.csv (то есть имя файла или путь к файлам)

Я пробовал код, но я не получаю правильный логин для поиска и l oop внутри.

@ECHO OFF & setlocal EnableDelayedExpansion
CD "C:\data"
For /R %%A in (*.csv) DO (
  Set "file[!#!]=%%A"
  Set /A #+=1
  )
For /L %%B in (0,1,!#!) do Echo(!file[%%B]!

Я изменил код в соответствии с решением. Но сейчас я не могу установить data1.csv в папке client1. а кто-нибудь может объяснить этот код? Кто-нибудь может мне помочь с логикой c кодирующей части?

вывод:

c:\data\client1\data2.csv
c:\data\client1\config\env.csv
c:\data\client2\data1.csv
c:\data\client2\data2.csv
c:\data\client2\config\env.csv

1 Ответ

1 голос
/ 03 апреля 2020

Вы можете сделать следующее, чтобы назначить их индексированной переменной. В случае даже умеренно больших наборов файлов сингулярная переменная будет превышать емкость строки, теряя назначенную ей информацию.

@ECHO OFF & setlocal EnableDelayedExpansion
CD "C:\data\client"
For /R %%A in (*.csv) DO (
    Set "file[!#!]=%%A"
    Set /A #+=1
)
For /L %%B in (0,1,!#!) do Echo(!file[%%B]!
...