2015-08-23 1 views
0

Я пытаюсь создать простой инструмент слияния файлов, чтобы объединить файл разбитого журнала в текстовый файл.Как передать параметры встроенным командам Windows через AutoHotKey?

FileSelectFolder, folder, \\Myserver\Data\ 
InputBox, filename, Save File,Please type the name you will call the merged file.`n The file will be saved in the folder "merged" of the same root directory as its "part files" are located., , , , , , , ,merged_file.txt 
if errorlevel = 1 
exitApp 
IfExist, %folder%\merged\%filename% 
MsgBox, 4, File Overwrite -or- Append?, The file already exists. Do you want to append to this file? `nNote: If you select "No" the existing file will be replaced during this process. 
ifmsgbox, no 
FileDelete %folder%\merged\%filename% 
FileCreateDir, %folder%\merged 
IfExist %folder%\merged\%filename%_file_list.txt 
FileDelete %folder%\merged\%filename%_file_list.txt 
Runwait, %COMSPEC% /c copy /k %folder%\*.log %folder%\merged\%filename% 
ExitApp 

Я не хочу использовать AHK FileRead и FileAppend файл журнала довольно большой ~ 40MB.

Приведенный выше код не дает ошибок, но не создает никаких файлов. я попытался добавить "к параметрам без успеха.

ответ

0

Хорошо еще один выстрел здесь!

Как выясняется, вам необходимо указать ваш путь в командной строке для использования с COMSPEC.

I также правильно сказано ранее, что для команды «Копировать» нет переключателя/опции K. Существует переключатель Compsec/K, который держит терминал открытым и a/c, что означает «Закрыть терминал».

Также ваш синтаксис неверен в отношении Копии. Чтобы объединить файл с копией, вам нужно сделать что-то вроде этого:

Copy mergedfile.txt+file2merge.txt newmergedfile.txt 

Но я предлагаю вам использовать тип, чтобы Объединить текстовый файл вместо:

RunWait, %COMSPEC% /c type "%folder%\*.log" >> "%folder%\merged\%filename%" 
+0

я не пробовал, до сих пор не повезло. спасибо за ответ – rellik

+0

Да, похоже, нет кнопки/k для команды копирования. Взял это, возможно, теперь это сработает. Вы изучили эквивалентную команду AKK FileCopy? – errorseven

+0

Я попытался FileAppend и FileCopy, к сожалению, файлы, пытающиеся слить, слишком велики для FileRead для хранения в памяти и добавления с помощью FileAppend. С FileCopy он копирует только один файл в виде объединенного файла, не добавляет все файлы в папке как один большой файл. – rellik

0

Это действительно просто на самом деле:

Loop, Read, C:\FileToReadFrom.txt, C:\FileToAddTo.txt 
    FileAppend, `r`n%A_LoopReadLine% 

Таким образом, вы только загрузить одну строку за один раз в баран.

Если вы хотите узнать больше:
Loop, Read file contents
FileAppend