Пакет: Как дать имя файла переменной - PullRequest
0 голосов
/ 29 мая 2018

Мне нужно отфильтровать большой список файлов снова и снова с помощью пакета, и поэтому было бы много работы, чтобы отредактировать имя каждого файла в пакете.Поэтому я подумал о том, чтобы добавить что-то вроде этого

SET "CName=dir "U:\Morheng S\Partage\_Scans\Result ICT\Done (Filter rework)\*.txt""

Но, очевидно, это не будет работать так, как задумано.Цель состоит в том, чтобы использовать это вместе с другими переменными, но я не могу заставить это работать.Имя файла всегда что-то наподобие .Complete.txt, но было бы гораздо сложнее установить его вместо проверки любого файла.

Я думаю, что-то вроде этого.

  • Стартовый цикл, хотя var CName не нуль или пуст
  • Поиск txt-файла
  • Редактирование txt-файла
  • Перемещение txt-файла
  • Снова запустите цикл

Я думаю, что на самом деле это очень просто, но я не понял, как передать значение из результата в переменную.Я также попробовал это:

SET CName=*
dir "U:\Morheng S\Partage\_Scans\Result ICT\Done (Filter rework)\*.txt" > %CName%

Но это только дает мне очень новый файл, который перемещается в эту папку.: C

Редактировать: Вот текущая партия, но я не могу понять, как заставить это работать должным образом.

@ECHO off
    SET SPT="U:\Morheng S\Partage\_Scans\Result ICT\Done (Filter rework)\%CNAME%.Complete.txt"
    SET SPT2="U:\Morheng S\Partage\_Scans\Result ICT\Done (Filter rework)\%CNAME%.Filtrer.txt"
    SET SPT3="U:\Morheng S\Partage\_Scans\Result ICT\Done (Filter rework)\%CNAME%.Temp.txt"
    SET SPT4="U:\Morheng S\Partage\_Scans\Result ICT\Done (Filter rework)\Refiltered"
    SET SPT5="U:\Morheng S\Partage\_Scans\Result ICT\Done (Filter rework)\%CNAME%.Programms.txt"

ECHO Cleaning Collected Entries ...
for %%a in ("U:\Morheng S\Partage\_Scans\Result ICT\Done (Filter rework)\*.Complete.txt") do (
    SET CName=%%a
    echo Filename: %CName%

    ::Removing of all the already checked lines (Common programs only)
    type %SPT% | findstr /v /c:"Office Professional Plus 2016" | findstr /v /c:"Office Professional Plus 2013" | findstr /v /c:"Office Home and Business 2016" | findstr /v /c:"DisplayName    REG_SZ    Microsoft Office Professionnel Plus" | findstr /v /c:"Trend Micro" | findstr /v /c:"7-Zip"  | findstr /v /c:"QuickZip" | findstr /v /c:"Mozilla Firefox" | findstr /v /c:"Google Chrome" | findstr /v /c:"Opera" | findstr /v /c:".NET Framework 4.7" | findstr /v /c:".NET Framework 4.6" | findstr /v /c:".NET Framework 4.5" | findstr /v /c:"Adobe Acrobat Reader" | findstr /v /c:"Dynamics NAV 2015" | findstr /v /c:"MobaXterm" > %SPT2%
    ::Removing of all the already checked lines (Additional common programs)
    type %SPT2% | findstr /v /c:"PDFCreator" | findstr /v /c:"CDBurnerXP" | findstr /v /c:"Java 8" | findstr /v /c:"Java 7" | findstr /v /c:"Java 6" | findstr /v /c:"Java 5" | findstr /v /c:"paint.net" | findstr /v /c:"FileZilla Client" | findstr /v /c:"Notepad++" | findstr /v /c:"EaseUS Partition Master" > %SPT3%
    ::Removing all the unnecessary lines
    type %SPT3% | findstr /v "Word OneNote Access Excel Outlook PowerPoint InfoPath Publisher Skype Proofing Groove HPCLJProM452 Taalprogramma C++ UninstallLegacy linguistique Herramientas Korrekturhilfen DeskUpdate Plusÿ2016 Description" | findstr /v /c:"Logiciel pour p" | findstr /v /c:"USB 3.0 eXtensible Host" | findstr /v /c:"Intel(R) Network Connections" | findstr /v /c:"Mozilla Maintenance Service" | findstr /v /c:"System CLR Types" | findstr /v /c:"HP Color LaserJet Pro M452" | findstr /v /c:"64-bit Components" | findstr /v /c:"Visual Studio 2010 Tools" | findstr /v /c:"Adobe Refresh Manager" | findstr /v /c:"Realtek High Definition Audio" | findstr /v /c:"Processor Graphics" | findstr /v /c:"Report Viewer" | findstr /v /c:"HP Unified" | findstr /v /c:"Chipset Device Software" | findstr /v /c:"Management Engine Components" | findstr /v /c:"Office OSM" | findstr /v /c:"Open XML SDK" | findstr /v /c:"Recover Keys" | findstr /v /c:"Dynamics NAV Setup" | findstr /v /c:"DCF MUI" | findstr /v /c:"Office OSM" | findstr /v /c:"Office OSM" | findstr /v /c:"Office Shared" | findstr /v /c:"Components Installer" | findstr /v /c:"Java Auto Updater" > %SPT2%
    timeout 1 /nobreak > nul
    DEL %SPT3%
    timeout 1 /nobreak > nul
    move %SPT% %SPT4%
    move %SPT2% %SPT4%
)
ECHO Cleaning complete!
ECHO Please press any key to finish!
PAUSE > NUL

Возможно, я что-то упустил.: /

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

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

@Echo off
Set "BaseDir=U:\Morheng S\Partage\_Scans\Result ICT\Done (Filter rework)\"
PushD "%BaseDir%" || (Echo Can't locate %BaseDir% & PAuse & Exit /B 1)
Set Delay=30
:Loop
For %%F in (*.Complete.txt ) do Call :Sub %%F
Waiting for %Delay% seconds
Timeout %Delay%
goto :Loop

:Sub
Echo Processing %1
notepad %1
Echo move %1 x:\path\
0 голосов
/ 29 мая 2018

, чтобы получить вывод команды в переменную, используйте цикл for /f:

for /f "delims=" %%a in ('dir /b /s "U:\Morheng S\Partage\_Scans\Result ICT\Done (Filter rework)\*.txt"') do set "file=%%a"

Но for может обрабатывать имена файлов самостоятельно, что делает его немного проще:

for %%a in ("U:\Morheng S\Partage\_Scans\Result ICT\Done (Filter rework)\*.txt") do set "file=%%a"

Обратите внимание, что оба метода вернут файл last , если найдено более одного.

Если вы хотите обработать каждый результат, включите код в цикл:

for %%a in ("U:\Morheng S\Partage\_Scans\Result ICT\Done (Filter rework)\*.txt") do (
  echo found file %%a
  echo modifying %%a
  echo move "%%~a" "C:\temp\"
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...