Войти

Показать полную графическую версию : [решено] в Google Chrome сменить папку для загрузок


v79italya
19-09-2019, 19:19
Добрый день. Есть ли возможность кодом сменить в гугле хром папку для загрузок?
например, сейчас все загрузки сохраняются в папке по адресу C:\abc\ . надо сменить, например, на D:\bca\ .

Iska
20-09-2019, 00:49
v79italya, попробуйте посредством PowerShell (без каких-либо проверок):
$aPreferences = Get-Content -Path "$($env:LocalAppData)\Google\Chrome\User Data\Default\Preferences" | ConvertFrom-Json

if(-not $aPreferences.download.default_directory) {
$aPreferences.download | Add-Member -NotePropertyName 'default_directory' -NotePropertyValue 'C:\Downloads'
} else {
$aPreferences.download.default_directory = 'C:\Downloads'
}

$aPreferences | ConvertTo-Json -Compress | Set-Content -Path "$($env:LocalAppData)\Google\Chrome\User Data\Default\Preferences"

не забыв предварительно сделать резервную копию файла «%LocalAppData%\Google\Chrome\User Data\Default\Preferences».

v79italya
20-09-2019, 11:41
Iska, спасибо за ответ. только я опять что то делаю не так. не сработало

Iska
20-09-2019, 15:37
v79italya, командлеты ConvertFrom-Json (https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/convertfrom-json?view=powershell-6)/ConvertTo-Json (https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/convertto-json?view=powershell-6) впервые появились в версии PowerShell 3.0. Если у Вас Windows 7 и выше — Вы можете попробовать обновиться до последних версий PowerShell. Я лично под Windows 7 x64 пока пользую 5.1.

v79italya
20-09-2019, 20:37
Iska, ну вы и удружили.. мало павер шелл стал английским, так после запуска кода гугл хром не запускался. после возвращения резервной копии все открытые вкладки пропали((самая большая беда). так и папка загрузки не изменилась.
еще полдня ушло на установку шокорепозитарии и шелл.
как поменять командой папку загрузок?

и по моему версия гугл хром изменилась. как то по другому выглядит

Iska
21-09-2019, 01:55
Iska, ну вы и удружили.. мало павер шелл стал английским »
v79italya, именно так.

так после запуска кода гугл хром не запускался. »
Подтверждаю. Как я писал выше — я не проверял при выкладывании кода последующую работоспособность Google Chrome'а:
…(без каких-либо проверок): »
В данном случае меня подвело слабое знание командлетов.

после возвращения резервной копии все открытые вкладки пропали((самая большая беда). »
Не подтверждаю. Ранее открытые вкладки хранятся не в файле Preferences. У меня после восстановления ранее сохранённого файла Preferences все вкладки как были, так и остались на месте.

так и папка загрузки не изменилась. »
Попробуйте так:
$aPreferences = Get-Content -Path "$($env:LocalAppData)\Google\Chrome\User Data\Default\Preferences" | ConvertFrom-Json

if(-not $aPreferences.download.default_directory) {
$aPreferences.download | Add-Member -NotePropertyName 'default_directory' -NotePropertyValue 'C:\Downloads'
} else {
$aPreferences.download.default_directory = 'C:\Downloads'
}

$aPreferences | ConvertTo-Json -Compress -Depth 10 | Set-Content -Path "$($env:LocalAppData)\Google\Chrome\User Data\Default\Preferences"

См. ниже дополнение.

еще полдня ушло на установку шокорепозитарии и шелл. »
К сожалению, мне это мало о чём говорит.

и по моему версия гугл хром изменилась. как то по другому выглядит »
У Google Chrome свои представления о времени и уместности обновления.

Дополнением: как я сейчас понимаю, Вам надо менять не тот параметр, что я думал ранее, не умолчальный каталог для загрузок, а ранее выбранный пользователем, то бишь — так (до кучи — зададим оба параметра):
$sFolder = 'C:\Downloads'
$aPreferences = Get-Content -Path "$($env:LocalAppData)\Google\Chrome\User Data\Default\Preferences" | ConvertFrom-Json

if(-not $aPreferences.download.default_directory) {
$aPreferences.download | Add-Member -NotePropertyName 'default_directory' -NotePropertyValue $sFolder
} else {
$aPreferences.download.default_directory = $sFolder
}

if(-not $aPreferences.savefile.default_directory) {
$aPreferences.savefile | Add-Member -NotePropertyName 'default_directory' -NotePropertyValue $sFolder
} else {
$aPreferences.savefile.default_directory = $sFolder
}

$aPreferences | ConvertTo-Json -Compress -Depth 10 | Set-Content -Path "$($env:LocalAppData)\Google\Chrome\User Data\Default\Preferences"

v79italya
23-09-2019, 11:56
Iska, спасибо. теперь все работает. только с закрытым браузером.
резервную копию все время делать? или, раз работает, то можно и не делать?

Iska
23-09-2019, 12:17
только с закрытым браузером. »
Работает и с открытым. Но Вы же понимаете, что при своём закрытии Google Chrome перезапишет сделанные скриптом изменения на свои текущие?

резервную копию все время делать? или, раз работает, то можно и не делать? »
А Вам всё время надо делать замену? Так-то резервную копию невредно делать всегда.

v79italya
23-09-2019, 13:36
понимаю.
замену надо делать раз в месяц в течение дня туда и обратно. просто по времени копипасте резерва занимает времени не меньше чем вручную поменять папку для загрузок)

Iska
23-09-2019, 16:31
v79italya, ну, давайте сделаем так:
$sSourceFile = "$($env:LocalAppData)\Google\Chrome\User Data\Default\Preferences"
$sFolder = 'C:\Downloads'
$aPreferences = Get-Content -Path $sSourceFile | ConvertFrom-Json

if(-not $aPreferences.download.default_directory) {
$aPreferences.download | Add-Member -NotePropertyName 'default_directory' -NotePropertyValue $sFolder
} else {
$aPreferences.download.default_directory = $sFolder
}

if(-not $aPreferences.savefile.default_directory) {
$aPreferences.savefile | Add-Member -NotePropertyName 'default_directory' -NotePropertyValue $sFolder
} else {
$aPreferences.savefile.default_directory = $sFolder
}

[System.IO.File]::Copy($sSourceFile, "$($sSourceFile)_$((Get-Date).ToString('yyyyMMdd-HHmmss'))")

$aPreferences | ConvertTo-Json -Compress -Depth 10 | Set-Content -Path $sSourceFile

v79italya
23-09-2019, 18:30
Iska, спасибо за вариант. только я больше ничего менять не буду.
я из файла excel макросом запущу этот скрипт. после смены папки для загрузок запускаю еще макрос, который будет работать (скачивать множество файлов) часа два. после макросом опять запущу этот скрипт, но с первоначальным адресом (который был до всего этого мероприятия) папки. и все

Iska
23-09-2019, 19:38
только я больше ничего менять не буду. »
Отчего?

после смены папки для загрузок запускаю еще макрос, который будет работать (скачивать множество файлов) »
Э… Загрузки на VBA? А зачем тогда здесь Google Chrome?

v79italya
24-09-2019, 21:11
Загрузки на VBA? А зачем тогда здесь Google Chrome? »
мне так удобнее. в Excel подготавливаю гиперссылки и макросом в цикле одну гиперссылку за другой скачиваю. через месяц скачиваю по новой. но перед этим, чтоб в папке были только нужные закачки, я вручную назначал папку для загрузок. потом нужно вернуть обратно(назначить папку загрузок первоначальную).
почему именно в Excel? если можно сделать формулами или в Power Query, то я справлюсь сам. если надо макросом, то приходится просить помощь других спецов. или попробовать найти готовый макрос и переделать под свою задачу. или записать макрорекордером и, опять же еле-как, переделать под свою задачу. а если дело касается батов или скриптов, то я в них вообще не разбираюсь и переделать ну никак не смогу. поэтому в Excel мне как то полегче.

Iska
24-09-2019, 23:21
v79italya, как по мне — .csv и wget\cURL\PowerShell было бы удобнее.

в Excel подготавливаю гиперссылки »
Как именно? Откуда они берутся?

и макросом в цикле одну гиперссылку за другой скачиваю »
Код макроса?

но перед этим, чтоб в папке были только нужные закачки, я вручную назначал папку для загрузок. потом нужно вернуть обратно(назначить папку загрузок первоначальную). »
И всё равно не могу уловить связь между макросом VBA и Google Chrome'ом.




© OSzone.net 2001-2012