cmd и выгрузка полученого пути

Discussion in 'Hardware and Software' started by Stefan, Apr 14, 2017.

  1. Stefan

    Stefan FH Beta Tester

    Joined:
    Feb 14, 2001
    Messages:
    17,827
    Location:
    Пивбар
    Чёт меня переклинило. Пятница наверное.
    с помощью dir /b/s config.xml ищем файл config.xml и имеем выведенный полный путь к нему.
    Теперь этот файл нужно скопировать. Тут меня клинит, как подставить этот путь в xcopy
     
  2. mcgru-

    mcgru- Well-Known Member

    Joined:
    Sep 21, 2000
    Messages:
    33,607
    Location:
    Tomsk, Russia
    А как же пауершелл?

    xcopy умеет брать список файлов из файла?

    А линуховые утилиты можно позапускать? Через цигвин...
     
  3. sharky

    sharky Well-Known Member

    Joined:
    Feb 9, 2000
    Messages:
    842
    Location:
    Prague, Czech Republic (Ex Mosсow, Ex Omsk, Russia
    В лоб не выйдет.

    @echo off
    dir /b /s config.xml >filepath.txt
    set /P SRC=<filepath.txt
    del filepath.txt >nul 2>&1
    echo %SRC%
     
    Flk likes this.
  4. bimbom

    bimbom FH Beta Tester

    Joined:
    Jan 19, 2006
    Messages:
    5,556
    Location:
    Moscow, Russia
    for %%f in (config.xml) do xcopy %%f t:\
     
    Flk likes this.
  5. Flk

    Flk Well-Known Member

    Joined:
    Aug 21, 2002
    Messages:
    5,978
    Location:
    Izhevsk
    Ну да, как обычно stdout в файл и делаем с ним что угодно.
     
  6. sharky

    sharky Well-Known Member

    Joined:
    Feb 9, 2000
    Messages:
    842
    Location:
    Prague, Czech Republic (Ex Mosсow, Ex Omsk, Russia
    Ты не верно понял задачу ;)
     
  7. bimbom

    bimbom FH Beta Tester

    Joined:
    Jan 19, 2006
    Messages:
    5,556
    Location:
    Moscow, Russia
    Чем не так? Файл нашёлся и скопировался.
     
  8. Stefan

    Stefan FH Beta Tester

    Joined:
    Feb 14, 2001
    Messages:
    17,827
    Location:
    Пивбар
    PS не умеет в XP
     
  9. sharky

    sharky Well-Known Member

    Joined:
    Feb 9, 2000
    Messages:
    842
    Location:
    Prague, Czech Republic (Ex Mosсow, Ex Omsk, Russia
    Рекурсивно в подкаталогах? :)
     
  10. bimbom

    bimbom FH Beta Tester

    Joined:
    Jan 19, 2006
    Messages:
    5,556
    Location:
    Moscow, Russia
    с подкаталогами будет так:
    for /r %%f in (config.xml) do xcopy %%f t:\
     
  11. sharky

    sharky Well-Known Member

    Joined:
    Feb 9, 2000
    Messages:
    842
    Location:
    Prague, Czech Republic (Ex Mosсow, Ex Omsk, Russia
    Некрасиво. Ты тупо выполняешь копирование без проверки на существование файла. В результате выводится куча ошибок.
    Хотя и короче. С другой стороны путь тебе неизвестен, а он может понадобится и дальше.
     
  12. mcgru-

    mcgru- Well-Known Member

    Joined:
    Sep 21, 2000
    Messages:
    33,607
    Location:
    Tomsk, Russia
    глядя на это, размышляю - может, зря я "отравился" unix-shell'ом в 1992? ;)
    пусть хоть и неуклюже, зато кое-что можно было бы сделать в коммандо-строчном скрипте и в венде... или когда появился такой развитый шелл в досе?
     
  13. Flk

    Flk Well-Known Member

    Joined:
    Aug 21, 2002
    Messages:
    5,978
    Location:
    Izhevsk
    После смерти дос. В вин 2000/хп вроде бы стало возможным что-то делать вменяемое.
    Но всё равно извращение, хотя и деваться некуда.
     
  14. mcgru-

    mcgru- Well-Known Member

    Joined:
    Sep 21, 2000
    Messages:
    33,607
    Location:
    Tomsk, Russia
    а в каком состоянии сейчас cygwin ?
    под него компиляют свежие утилитки из мира линуха? я про до-PS-ную эпохуэ...
     
  15. Flk

    Flk Well-Known Member

    Joined:
    Aug 21, 2002
    Messages:
    5,978
    Location:
    Izhevsk
    А кроме grep и sed больше ничего и не надо :)
     
  16. sharky

    sharky Well-Known Member

    Joined:
    Feb 9, 2000
    Messages:
    842
    Location:
    Prague, Czech Republic (Ex Mosсow, Ex Omsk, Russia
    А кому он нафиг нужен?
     
  17. mcgru-

    mcgru- Well-Known Member

    Joined:
    Sep 21, 2000
    Messages:
    33,607
    Location:
    Tomsk, Russia
    ну, может кому-то bash-скрипты видятся более лаконичными, нежели конструкции типа %%f

    find еще хорош, перенаправлялки всякие...
    ну и rsync, наверное, получше будет, чем xcopy.
    а если б придумали как на ходу в скриптах преобразовывать c:\ в /mnt/blabla/c или /cyg-drive/c , то и вовсе ляпота б была :)
     
  18. Stefan

    Stefan FH Beta Tester

    Joined:
    Feb 14, 2001
    Messages:
    17,827
    Location:
    Пивбар
    В винде есть прекрасный robocopy
    $txt = txt -replace "\" "/"
     
  19. bimbom

    bimbom FH Beta Tester

    Joined:
    Jan 19, 2006
    Messages:
    5,556
    Location:
    Moscow, Russia
    В смысле? В переменную подставляется полный путь найденного файла. Т.е. файл гарантировано существует. И именно он и копируется.
    Что не так?
     
  20. sharky

    sharky Well-Known Member

    Joined:
    Feb 9, 2000
    Messages:
    842
    Location:
    Prague, Czech Republic (Ex Mosсow, Ex Omsk, Russia
    У тебя пытается тупо скопировать файл во всех каталогах.
    Получается вот такая фигня.
    D:\Works\UAE>for /R %f in (config.xml) do copy %f D:\temp 2>&1

    D:\Works\UAE>copy D:\Works\UAE\config.xml D:\temp 2>&1
    The system cannot find the file specified.

    D:\Works\UAE>copy D:\Works\UAE\2016.08.19\config.xml D:\temp 2>&1
    The system cannot find the file specified.

    D:\Works\UAE>copy D:\Works\UAE\2016.12.01\config.xml D:\temp 2>&1
    The system cannot find the file specified.

    D:\Works\UAE>copy D:\Works\UAE\2017.01.03\config.xml D:\temp 2>&1
    The system cannot find the file specified.

    D:\Works\UAE>copy D:\Works\UAE\2017.01.12\config.xml D:\temp 2>&1
    The system cannot find the file specified.

    D:\Works\UAE>copy D:\Works\UAE\2017.01.26\config.xml D:\temp 2>&1
    The system cannot find the file specified.

    D:\Works\UAE>copy D:\Works\UAE\2017.02.22\config.xml D:\temp 2>&1
    The system cannot find the file specified.

    D:\Works\UAE>copy D:\Works\UAE\2017.02.23\config.xml D:\temp 2>&1
    The system cannot find the file specified.