Что нового

Как создать файл

lexaSF

Новичок
Сообщения
182
Репутация
3
Подскажите, как в автоите можно создать БАТ файл?что-то подобной функции не нашел)


Добавлено:
Сообщение автоматически объединено:

и кстати С РОЖДЕСТВОМ!! :D :IL_AutoIt_1:
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Код:
$hFile = FileOpen(@ScriptDir & '\test.bat', 2)
$sCode = '@echo off' & @CRLF & _
		 'set VAR=Test!' & @CRLF & _
		 'echo %VAR%'
		 
FileWrite($hFile, $sCode)
FileClose($hFile)
 
Автор
L

lexaSF

Новичок
Сообщения
182
Репутация
3
Неа, мне нужно именно создать файл
 

Guezt

Продвинутый
Сообщения
335
Репутация
82
lexaSF
тебе Garrett как раз и показал как именно создать файл... О_о
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Код:
#include <File.au3>
_FileCreate(@DesktopDir & "\MyFile.bat")
 

sss

Продвинутый
Сообщения
332
Репутация
96
А нельзя было просто написать?
Код:
FileWrite(@ScriptDir & "\file.bat","")
 

Viktor217

Осваивающий
Сообщения
233
Репутация
31
Sky-WaLkeR сказал(а):
А нельзя было просто написать?
Код:
FileWrite(@ScriptDir & "\file.bat","")
Это добавит определённый текст в последний открытый документ, этим файл не создашь, хотя может ты другое в виду имел...
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Viktor217 [?]
Это добавит определённый текст в последний открытый документ, этим файл не создашь, хотя может ты другое в виду имел...
это не так. если файла нет, то он создастся. и никакого текста там не будет. если файл есть то в него ничего не добавится. т.к. аргумент, который отвечает за содержимое записываемого фрагмента текста - пусто. и с чего ты взял что берется последний открытый файл? путем для файла служит первый аргумент функции. не вводи людей в заблуждение
 

Dark-Side

Знающий
Сообщения
72
Репутация
17
Согласен, намного лучше воспользоваться FileWrite и не подключать лишних библиотек - это зло. И имхо, лучше сделать путь попроще т.к. он новичек все же, без ScriptDir.
Код:
FileWrite("file.bat","")
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Dark-Side [?]
не подключать лишних библиотек - это зло
Это бред. Без этих “лишних” библиотек пришлось бы всё писать вручную каждый раз заново.

лучше сделать путь попроще т.к. он новичек все же, без ScriptDir
Не лучше, для новичка как раз будет лучше увидеть корректый способ, а оставлять одно имя файла это не корректно, скрипт могут запускать с указанием другого рабочего каталога, и тогда файл будет создан не там где(?) нужно.

Kaster [?]
самый простой способ - FileOpen($filepath, 2)
Вообще то желательно ещё и закрыть:
Код:
FileClose(FileOpen($sFile, 1))

Как видишь, я вместо паерезаписи (2) использовал дописывание (1) в файл, чтобы существующий файл случайно не опустошился :smile:
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481

Dark-Side

Знающий
Сообщения
72
Репутация
17
CreatoR сказал(а):
Это бред. Без этих “лишних” библиотек пришлось бы всё писать вручную каждый раз заново.

Заметьте:
1) Топик этой темы - "Как создать файл".
2) Файл можно создать без подключения дополнительной библиотеки, воспользовавшись стандартной функцией записи в файл, которой для простого создание файла более чем достаточно.
3) Включая библиотеку ради функции, которая доступна стандартно, не нуждаясь в каких-либо особенностях функции из библиотеки - ущербно.
Надеюсь вам так будет понятнее что я имел в виду...

Говорилось не о библиотеках в повседневном ихнем применении, а конкретно о теме - о создании файла.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Dark-Side [?]
Включая библиотеку ради функции, которая доступна стандартно, не нуждаясь в каких-либо особенностях функции из библиотеки - ущербно.
Не вижу тут никакого ущерба.

P.S
Я и сам никогда не пользовался _FileCreate, мне было достаточно FileWrite, но автор данной темы это особенная личнсть, для него нужно было показать как можно понятнее, да и корректнее, чтобы дальне не делал ошибок.
 

Dark-Side

Знающий
Сообщения
72
Репутация
17
CreatoR сказал(а):
Dark-Side [?]
Включая библиотеку ради функции, которая доступна стандартно, не нуждаясь в каких-либо особенностях функции из библиотеки - ущербно.
Не вижу тут никакого ущерба.

P.S
Я и сам никогда не пользовался _FileCreate, мне было достаточно FileWrite, но автор данной темы это особенная личнсть, для него нужно было показать как можно понятнее, да и корректнее, чтобы дальне не делал ошибок.

Ущерб в том, что ты подключаешь библиотеку ради того, что можешь сделать и без нее. И не 100-ми строками своего кода, а так же одной строкой.
С библиотекой выходит одна строка кода + строка инклуд + сама библиотека, а без библиотеки всего лишь строка FileWrite.

p.s.: а библиотека вся включается или AutoIt извлекает из нее только нужные функции и все связанное с ними? 0_о Потому что я думаю, что он всю библиотеку вносит в программу, по этому это и ущербненько, ненужные функции.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Dark-Side [?]
Ущерб в том, что ты подключаешь библиотеку ради того, что можешь сделать и без нее.
Так а в чём ущерб? какой в этом вред? программа будет хуже работать? :smile:
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
OffTopic:
Dark-Side [?]
Потому что я думаю, что он всю библиотеку вносит в программу, по этому это и ущербненько, ненужные функции.
Он вносит всю библиотеку в программу. А чем Вам мешают ненужные функции?

Ради спортивного интереса скомпилировал с опциями Use UPX и FileInclude Compression:Highest два скрипта:
Код:
; 1
MsgBox(64, 'test', 'test')

Код:
; 2
#include <WinAPIEx.au3>
_WinAPI_EmptyWorkingSet()
MsgBox(64, 'test', 'test')

Результат:
1. Размер 300 915 байт.
2. Размер 452 419 байт.
Разница в 151 504 байт (~148 кб) - мизерная. При этом WinAPIEx.au3 (991 461 байт) еще подключает APIConstants.au3 (117 043 байт) и WinAPI.au3 (380 043 байт). WinAPI.au3 подключает еще 5 библиотек, мне дальше лень считать.
Не понимаю, в чем ущербность?
 

sss

Продвинутый
Сообщения
332
Репутация
96
Я считаю, что добавлять инклюду с доп.кодом в этом случае дольше, чем добавить FileWrite :smile: . Если вы посмотрите в код функции _FileCreate, то увидите, что это - просто полностью оформленный, 100% вариант функции FileWrite, с выводом всевозможных ошибок. Так что в принципе мы обсуждаем одни и те же функции, просто по-разному исполненные и обозванные)
 
Верх