Каковы эквивалентные команды в Windows, если у меня есть эти команды в Linux?

if (!is_dir('geoip')) mkdir('geoip', 0744);
shell_exec('unzip -oj GeoLiteCity.zip -d geoip/');

shell_exec('rm -rf geoip/');

3 ответа3

2

Вам следует скачать и установить GnuWin32, чтобы получить все основные команды UNIX для Windows, например, wget , sed , cat , grep , rm , mkdir , unzip - все, что вам нужно.

http://sourceforge.net/projects/getgnuwin32/files/latest/download?source=files

1

если вы можете позволить себе просто игнорировать ошибки, то для ваших команд PHP будет работать следующее:

(Надеюсь, вы получили заявление до того, как поместить ваш процесс в соответствующий подкаталог, ДО того, как вы сделаете это ... вот так)

cd c:\mystuff\temp\

mkdir geoip
unzip -oj GeoLiteCity.zip -d geoip/
rmdir /S /Q geoip/

Если geoip уже существует, mkdir выдаст ошибку, но это не смертельно. Конечно, если вы распакуете что-то поверх уже существующего, у вас возникнут проблемы. Но ваш оригинальный сценарий не покрывает это либо.

rmdir /S /Q geoip / удалит subdir geoip и все, что находится под ним. такой же как rm -rf

БУДЬТЕ ОСТОРОЖНЫ с rmdir /S /Q, с ним можно легко делать глупости.

0
  • Учитывая папку, разархивировать в это место
  • Задан неверный путь, делает каталог и распаковывает
  • Получив файл, переименовывает этот файл в filename.old, делает dir и распаковывает

script.bat

@echo off

IF NOT EXIST %1 GOTO Make_Folder

REM File exists, test to see if it's a folder
REM Get attributes of first param. 
set ATTR=%~a1

REM if first character is "d", it's a folder
set DIRATTR=%ATTR:~0,1%
IF /I "%DIRATTR%"=="d" GOTO Extract

:Is_File
echo %1 already exists and will be renamed. 
pause
ren %1 %1.old

:Make_Folder
mkdir %1
attrib +r %1

:Extract
unzip -oj GeoLiteCity.zip -d geoip
echo Extraction test complete. Extracted files will now be deleted. 
pause
attrib -r -s -h %1
rmdir /S /Q %1

использование

script "my folder"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .