2013-05-20 6 views
1

Я пытаюсь написать пакетный файл, который поддерживает файлы с моего телефона Android на моем компьютере. Часть этого процесса заключается в том, что мой телефон генерирует список файлов в виде текстового файла с использованием моста отладки android, а затем проверяет его на текстовый файл, содержащий список файлов из архива 7zip, на который я поддерживаю свой телефон.Пакетный файл разбор текстового файла из UNIX

Проблема заключается в том, что список файлов, сгенерированный с использованием моста отладки android, не выглядит корректно.

"C:\%USERPROFILE%\adb\adb.exe" shell ls /sdcard/TWRP/BACKUPS/0149BCAA1301701A > androidlist2.txt 

"C:\Program Files\7-zip\7z.exe" l TWRPBackups.t7z > archivelist.txt 

type archivelist.txt | findstr TWRP\BACKUPS\0149BCAA1301701A\ > results.txt 

del archivelist.txt 

setLocal EnableDelayedExpansion 

FOR /F "tokens=* usebackq" %%c IN (results.txt) DO (
    SET RESULT=%%c 
    SET RESULT=!RESULT:~83! 
    REM Writes the trimmed line to the output file 
    ECHO !RESULT!>>"archivelist2.txt" 
) 

findstr /V /L \ archivelist2.txt >> archivelist.txt 

findstr /V /L * androidlist2.txt >> androidlist.txt 

del results.txt 

del archivelist2.txt 

findstr /vixg:"archivelist.txt" androidlist.txt > discrepancies.txt 

for /f "tokens=*" %%j in (discrepancies.txt) do (
"C:\%USERPROFILE%\adb\adb.exe" pull /sdcard/TWRP/BACKUPS/0149BCAA1301701A/%%j/ TWRP/BACKUPS/0149BCAA1301701A/%%j 
) 

Я знаю, что мой код - ужасный клоч; Я новичок в этом. Но то, что я делаю в первых двух строках, - это вытаскивание списков файлов в виде текстовых файлов из оболочки Android Android и из архива 7zip соответственно. После этого я обрезаю их оба, чтобы оставить только имена файлов и сравнить текстовые файлы для расхождений.

Проблема заключается в последнем шаге, читающем discrepancies.txt и вытягивании соответствующих файлов с телефона. Я заметил, что если я вручную перейду в discrepancies.txt и заменим строки (перейдите в конец каждой строки, нажмите «Удалить», нажмите «Ввод»), затем файл правильно проанализирует. Как избежать или устранить эту проблему?

+0

Каких linebrakes вы изначально имеют: 'CR',' 'LF', CRLFCR' .....? Вы можете видеть это, например. '' Notepad ++. – Endoro

+0

CR и CRLF, по-видимому. Notepad ++ показывает: '2013-05-16--10-14-52 [CR] [CR] [LF] 2013-05-18--10-59-11 [CR] [CR] [LF] 'в файле с моста отладки android. – Firnagzen

ответ

0

Попробуйте это, может быть полезным:

for /f "tokens=*" %%j in (discrepancies.txt) do (
for /f "delims=" %%x in ("%%j") do (
"C:\%USERPROFILE%\adb\adb.exe" pull /sdcard/TWRP/BACKUPS/0149BCAA1301701A/%%x/ TWRP/BACKUPS/0149BCAA1301701A/%%x 
)) 
+0

Это работает, спасибо большое! Итак, если я правильно это читаю, теперь код ищет разделители (разрыв строки 'CR') в разделителях, обозначенных' CRLF', правильно? – Firnagzen

+0

Каждый цикл 'for loop 'удаляет одну строку. Итак, два цикла для петель удаляют 1.5 разрыва строки :) – Endoro

+0

... половина разрыва строки. Ну, я узнал что-то новое сегодня, еще раз спасибо! – Firnagzen

Смежные вопросы