Что нового

как сохранить файл под нужным именем через окно FileSaveDialog?

agikon

Знающий
Сообщения
789
Репутация
17
вот мой код который не работает.
задача: просто выбрать файл и пересохранить его под другим именем.
помогите пожалуйста.
трудность в том что не пойму как считать имя которое я ввёл в диалоговое окно FileSaveDialog

Код:
$title_chois = "Выбрать файл"

	$var1 = FileOpenDialog($title_chois, @MyDocumentsDir & "\", "Текстовые файлы(*.txt)", 1 + 4)
	If @error Then
		MsgBox(4096, "", "Не выбрано ни одного файла")
	Else
		$var2 = StringReplace($var1, "|", @CRLF)
		$var2 = FileSaveDialog( "Сохранить файл", @MyDocumentsDir & "\", "Текстовые файлы (*.txt)", 2)

		; здесь код который бы считывал имя которое я ввёл и с этим именем создавал файл txt с моим именем.

	EndIf
 

AZJIO

Меценат
Меценат
Сообщения
2,892
Репутация
1,196
Код:
$title_chois = "Выбрать файл"

$var1 = FileOpenDialog($title_chois, @MyDocumentsDir & "\", "Текстовые файлы(*.txt)", 3)
If @error Then
	MsgBox(4096, "", "Не выбран файл")
Else
	$var2 = FileSaveDialog( "Сохранить файл", @MyDocumentsDir & "\", "Текстовые файлы (*.txt)", 16)
	If @error Then
		MsgBox(4096, "", "Не выбран файл")
		Exit
	EndIf
	FileMove($var1, $var2, 9)

	; здесь не надо считывать, файл возвращается в $var2
EndIf
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
17
AZJIO
Не то.
Ваш код просто переименовывает файл, и к тому же оставляет его без расширения.
например был файл "имя1.txt" а стал после переименования просто "имя2"

а надо чтобы просто скопировать файл под другим именем, а исходный файл не трогать.
 

Naisho

Знающий
Сообщения
86
Репутация
12
Код:
$title_chois = "Выбрать файл"

$var1 = FileOpenDialog($title_chois, @MyDocumentsDir, "Текстовые файлы(*.txt)", 3)
If @error Then
    MsgBox(4096, "", "Не выбран файл")
Else
	$var2 = FileSaveDialog( "Сохранить файл " & $var1, StringRegExpReplace($var1,'\\[^\\]*$', ''), "Текстовые файлы (*.txt)", 16, StringRegExpReplace($var1,'^.*\\', ''))
    If @error Then
        MsgBox(4096, "", "Не выбран файл")
        Exit
    EndIf
    FileCopy($var1, $var2, 9)

    ; здесь не надо считывать, файл возвращается в $var2
EndIf
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
17
Naisho
Именно то что требовалось.
Спасибо.
 

Z_Lenar

Продвинутый
Сообщения
209
Репутация
52
Код:
#include <FileConstants.au3>

$open = FileOpenDialog('title', @ScriptDir, 'All files (*.*)', $FD_FILEMUSTEXIST)
If Not @error Then
	$save = FileSaveDialog('title', @WorkingDir, 'All files (*.*)')
	If Not @error Then
		FileCopy($open, StringRegExpReplace($open, '^.*\\(.*(\.)(.*)|.*)$', StringReplace($save, '\', '\\') & '\2\3'), BitOR($FC_CREATEPATH, $FC_OVERWRITE))
	EndIf
EndIf
 
Верх