В PHP вам нужно либо использовать функции multibyte , либо включить mbstring.func_overload . Таким образом, такие вещи, как strlen, будут работать, если у вас есть символы, которые принимают более одного байта.
Вам также потребуется определить набор символов ваших ответов. Вы можете использовать AddDefaultCharset, как указано выше, или написать PHP-код, который возвращает заголовок. (Или вы можете добавить тег META в свои HTML-документы.)
Попробуйте это:
for /R "C:\root\folder" %%I in ("*.zip") do (
"%ProgramFiles(x86)%\7-Zip\7z.exe" x -y -o"%%~dpI" "%%~fI"
)
или (если вы хотите извлечь файлы в папку с именем после Zip-файла):
for /R "C:\root\folder" %%I in ("*.zip") do (
"%ProgramFiles(x86)%\7-Zip\7z.exe" x -y -o"%%~dpnI" "%%~fI"
)
Ответ Ансгара выше был для меня совершенно идеальным, но я также захотел удалить архивы, если извлечение было успешным. Я нашел этот и включил его в приведенное выше, чтобы дать:
for /R "Destination_Folder" %%I in ("*.zip") do (
"%ProgramFiles%\7-Zip\7z.exe" x -y -aos -o"%%~dpI" "%%~fI"
"if errorlevel 1 goto :error"
del "%%~fI"
":error"
)
Попробуйте это.
@echo off
for /F "delims=" %%I IN (' dir /b /s /a-d *.zip ') DO (
"C:\Program Files (x86)\7-Zip\7z.exe" x -y -o"%%~dpI\%%~nI" "%%I"
)
pause
Возможно ли, что некоторые ваши zip-файлы имеют пространство в имени? Если это ваша первая строка должна быть:
for /F "usebackq" %%I IN (`dir /b /s "*.zip"`) DO (
Обратите внимание на использование `вместо 'См. FOR /?