2017-02-15 3 views
0

У меня есть сценарий Windows, который выполняет итерацию во всех моих подпапках, чтобы искать каждый отдельный zip-файл, который он находит, и помещает их абсолютные пути в файл bat.Добавить строку в начале сгенерированного файла

dir /b /s /-p *.zip /o:n | findstr /E .zip >"%CD%"\listFichierZip.bat 

Теперь я хочу изменить каждую строку в функцию MOVE.

  1. Добавить MOVE перед каждым путем
  2. Append папки в конце каждого пути

я столкнулся некоторые проблемы, пытаясь добавить «MOVE» строку перед функцией Findstr. Я знаю, как конкат строки, переменные, но функция возвращает, я этого не делаю.

Я нашел некоторые темы, задающие этот вопрос на StackOverflow, но все были о Unix, к сожалению.

ответ

1
@echo off 
    setlocal enableextensions disabledelayedexpansion 

    > "moveFichierZip.bat" (
     for /r %%a in ("*.zip") do echo move "%%~fa" "x:\somewhere" 
    ) 

Используйте рекурсивную for команды для поиска всех .zip файлов и для каждого из echomove текста с последующим файлом с полным путем (%%~fa) и целевой папкой.

Весь выход перенаправляется в конечный файл цели.

Чтобы непосредственно запустить это из командной строки, используйте

>"moveFichierZip.bat" (for /r %a in ("*.zip") do @echo move "%~fa" "x:\somewhere") 
+0

@ Gloups Обратите внимание, что если все, что вы действительно хотите сделать, - это переместить файлы ZIP, вы можете пропустить шаг создания файла 'moveFilchierZip.bat' и просто запустить пакетный файл напрямую:' for/r %% a in ("* .zip") переместить "%% ~ fa" "x: \ где-нибудь" –

-1

Ваш лучший вариант - установить busybox.exe и получить все соответствующие текстовые инструменты unix в одном исполняемом файле. Затем вы сможете:

find . -name *.zip -print | xargs -i echo MOVE "{}" DestDir > "$CD"/listFichierZip.bat 

и все будет. Выполните несколько проверок перед выполнением listFichierZip.bat ...

+0

* Я нашел некоторые темы, задает этот вопрос на StackOverflow, но все они были о Unix, к сожалению. * –

+1

Ваше понимание цитируемого предложения от ФП «Я не хотят решений Unix ». Мое понимание: «Я не знаю, как использовать решения Unix». Поэтому я считаю полезным показать им, как эти решения Unix могут использоваться в Windows (полезны и в другие времена, поскольку они распространены, в то время как почти никто не использует 'cmd' в таких случаях). Я добавил свой ответ _exactly_, потому что я прочитал предложение, которое вы цитируете. Тем не менее, мы отличаемся друг от друга, и я очень благодарю вас за то, что вы мотивируете ваш downvote. Я желаю, чтобы каждый поверенный сделал так, то, что мы отличаемся, было бы намного яснее для всех. – Dario

+0

Donevote ** без ** комментария '==' ** означает парней **. Затем, когда тег «cmd», пользователь хочет решение таким образом **, но ** вы предложите ему/ей установить 'busybox.exe', что является еще одной проблемой ** для него/нее. в то время как он/она не может использовать ** cmd **, вы думаете, что он/она может ues ** bash ** ?. Я рад, что вы не сошли с ума :) –

Смежные вопросы