PDA

Показать полную графическую версию : Bat>>TXT


LepeT
09-11-2014, 12:57
Подскажите как записать весь путь,плюс к этому файлы находящие по этому пути по маске,т.е

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

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

dedmazai1870
09-11-2014, 13:14
LepeT
dir /b/s "%temp%/*fgh*" >> cmds.txt
Так со всеми подпапками будет и независимо от регистра.((

gora
09-11-2014, 15:38
полный путь и имя файла по маске должно писаться в текстовой документ »
@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
Спасибо большое,а можно еще вопрос как указать после какой строчки должен создавать текст,к примеру мне нужно не в начале,а на 24 строке в текстовом документе

gora
09-11-2014, 16:16
к примеру мне нужно не в начале,а на 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
Да правильно,не выходит,он весь текстовой документ стирает и все

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

gora
09-11-2014, 16:33
в текст длинной 50 строк »
Этот файл уже существует? В нем уже есть 50 строк? И приведите пример Вашего файла, если он существует до запуска скрипта, ибо его нужно обрабатывать.что бы имена файлов начинались на 24 строке »
А если файлов будет найдено меньше 50-24=26 штук или наоборот больше 26 и весь файл станет длиннее 50 строк? Что нужно делать?

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

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

gora
09-11-2014, 16:46
LepeT, приведите пример Вашего файла »
Заархивируйте его и прикрепите к посту.

LepeT
09-11-2014, 17:17
это 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
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
Благодарю еще раз

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

gora
09-11-2014, 19:41
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
Теперь заработало,а в чем ошибка была?

gora
09-11-2014, 20:00
В последней строке списка (2vbs.txt) формировалась ненужная запятая.

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




© OSzone.net 2001-2012