Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Bat>>TXT (http://forum.oszone.net/showthread.php?t=290672)

LepeT 09-11-2014 12:57 2426887

Bat>>TXT
 
Подскажите как записать весь путь,плюс к этому файлы находящие по этому пути по маске,т.е

echo %temp%/*fgh* >> cmds.txt как то так только что бы еще на конце было имя найденного файла по маске

В результате в текстовом документе должно получится
C:\Users\name\AppData\Local\Temp\fgh123333 (т.е полный путь и имя файла по маске должно писаться в текстовой документ,помогите осуществить

dedmazai1870 09-11-2014 13:14 2426893

LepeT
dir /b/s "%temp%/*fgh*" >> cmds.txt
Так со всеми подпапками будет и независимо от регистра.((

gora 09-11-2014 15:38 2426954

Цитата:

Цитата LepeT
полный путь и имя файла по маске должно писаться в текстовой документ »

Код:

@Echo Off
(For /f "tokens=*" %%i In ('Dir /b /a-d "%TEMP%\*fgh*"') Do Echo %TEMP%\%%i)>cmds.txt
Exit


LepeT 09-11-2014 16:10 2426963

Спасибо большое,а можно еще вопрос как указать после какой строчки должен создавать текст,к примеру мне нужно не в начале,а на 24 строке в текстовом документе

gora 09-11-2014 16:16 2426966

Цитата:

Цитата LepeT
к примеру мне нужно не в начале,а на 24 строке в текстовом документе »

Если я правильно понял, то нужно пропустить первые 23 строки вывода? Тогда так:
Код:

@Echo Off
(For /f "skip=23 tokens=*" %%i In ('Dir /b /a-d "%TEMP%\*fgh*"') Do Echo %TEMP%\%%i)>cmds.txt
Exit


LepeT 09-11-2014 16:25 2426975

Да правильно,не выходит,он весь текстовой документ стирает и все

проще говоря мне нужно в текст длинной 50 строк вставить имена файлов,а именно что бы имена файлов начинались на 24 строке

gora 09-11-2014 16:33 2426984

Цитата:

Цитата LepeT
в текст длинной 50 строк »

Этот файл уже существует? В нем уже есть 50 строк? И приведите пример Вашего файла, если он существует до запуска скрипта, ибо его нужно обрабатывать.
Цитата:

Цитата LepeT
что бы имена файлов начинались на 24 строке »

А если файлов будет найдено меньше 50-24=26 штук или наоборот больше 26 и весь файл станет длиннее 50 строк? Что нужно делать?

LepeT 09-11-2014 16:42 2426986

Да файлов может быть от 2 до 5,если их много то при вставке и общее количество строк будет больше,к примеру 5 файлов - 5 строк,их нужно вставить после 23,а после что бы продолжался остальной текст в итоге будет 55 строк

Я пробовал и с текстовом документом где уже есть текст и пробовал так что бы он сам его создавал,все равно 0 кб.

gora 09-11-2014 16:46 2426988

LepeT,
Цитата:

Цитата gora
приведите пример Вашего файла »

Заархивируйте его и прикрепите к посту.

LepeT 09-11-2014 17:17 2427000

это vbs скрипт
Код:

Option Explicit
 
Const SHCONTF_NONFOLDERS    = &H00040
Const SHCONTF_INCLUDEHIDDEN = &H00080
 
 
Dim arrFiles
Dim strFTPFolder
 
Dim objFSO
Dim objShell
 
Dim strFile
 
Dim objDestFolder
 
Dim lngCurrSize
 
Dim objFolderItems
Dim objFolderItem
 
 
arrFiles = Array( _
    "D:\Install\Mozilla Firefox\Mozilla Firefox 28.0\Firefox Setup 28.0.exe", _
    "D:\Install\Mozilla Firefox\Mozilla Firefox 28.0\FirefoxPortable_28.0_Russian.paf.exe", _
    "D:\Install\Mozilla Firefox\Mozilla Firefox 33.0.2\Firefox Setup 33.0.2.exe", _
    "D:\Install\Mozilla Firefox\Mozilla Firefox 33.0.2\FirefoxPortable_33.0.2_Russian.paf.exe" _
)
 
strFTPFolder = "ftp://User:Password@my.ftpserver.com/DestFolder"
 
 
Set objFSO  = WScript.CreateObject("Scripting.FileSystemObject")
Set objShell = WScript.CreateObject("Shell.Application")
 
Set objDestFolder = objShell.NameSpace(strFTPFolder)
 
If Not objDestFolder Is Nothing Then
    For Each strFile In arrFiles
        If objFSO.FileExists(strFile) Then
            WScript.Echo strFile, "--->", objDestFolder.self.Path
           
            lngCurrSize = -1
           
            objDestFolder.CopyHere strFile
           
            Do Until lngCurrSize = objFSO.GetFile(strFile).Size
                Set objFolderItems = objDestFolder.Items
               
                objFolderItems.Filter SHCONTF_NONFOLDERS + SHCONTF_INCLUDEHIDDEN, "*.*"
               
                For Each objFolderItem In objFolderItems
                    If objFolderItem.Name = objFSO.GetFileName(strFile) Then
                        lngCurrSize = objFolderItem.Size
                    End If
                Next
               
                WScript.Sleep 100
               
                Set objFolderItems = Nothing
            Loop
        Else
            WScript.Echo "Can't find source file [" & strFile & "]."
        End If
    Next
Else
    WScript.Echo "Can't connect into FTP folder [" & strFTPFolder & "]."
    WScript.Quit 2
End If
 
Set objShell = Nothing
Set objFSO  = Nothing
 
WScript.Quit 0


gora 09-11-2014 17:44 2427009

Вложений: 1
LepeT, разделил Ваш файл на две части для упрощения задачи. Части прикрепил.
Скрипт:
Код:

@Echo Off
(For /f "tokens=*" %%i In ('Dir /b /a-d "%TEMP%\*fgh*"') Do Echo    "%TEMP%\%%i", _)>2vbs.txt
Copy /A 1vbs.txt + 2vbs.txt + 3vbs.txt cmds.txt
Exit


LepeT 09-11-2014 17:55 2427013

Благодарю еще раз

LepeT 09-11-2014 19:13 2427054

Странно очень,запускаю оригинал все работает,запускаю то что так получается ошибка http://f6.s.qip.ru/NGYkK88j.png причем в этой строке однак скобочка,сравнивал полностью текст,нету различий не каких,даже кодировку смотрел...

gora 09-11-2014 19:41 2427064

LepeT, попробуйте
Код:

@Echo Off
SetLocal EnableDelayedExpansion
Set "t="
(For /f "tokens=*" %%i In ('Dir /b /a-d "%TEMP%\*fgh*"') Do (
        If Not "!t!"=="" Echo    !t!, _
        Set t="%TEMP%\%%i"
)
Echo    !t! _)>2vbs.txt
Copy /A 1vbs.txt + 2vbs.txt + 3vbs.txt cmds.txt
Exit


LepeT 09-11-2014 19:57 2427073

Теперь заработало,а в чем ошибка была?

gora 09-11-2014 20:00 2427076

В последней строке списка (2vbs.txt) формировалась ненужная запятая.

LepeT 09-11-2014 21:02 2427092

Я понял,не подскажите еще возможно не по теме,про vbs,при отправке на ftp,почему приходит 1 файл и выскакивает лишь одна табличка,не могу понять почему


Время: 21:15.

Время: 21:15.
© OSzone.net 2001-