批量创建FTP匿名根目录及子目录需用批处理脚本先建立多级目录(如upload、reports等),再通过icacls为IUSR用户授予(OI)(CI)(RX,W)权限,最后在IIS中添加虚拟目录并配置匿名读写权限。
批量创建FTP匿名根目录及子目录
windows自带iis ftp服务默认匿名用户访问路径是c:\inetpub\ftproot,但实际部署中常需为不同用途或部门建立独立的匿名可写目录(如upload、public、logs等)。用批处理脚本可一次性在指定位置创建多级结构,并自动配置ntfs权限,确保iis ftp能正常识别和授权。
脚本核心逻辑:先建目录,再赋权限
仅靠mkdir命令创建目录不够——IIS FTP要求匿名用户(IUSR)对目标目录有“读取+写入+修改”权限,否则上传会失败。批处理需调用icacls同步设置权限。以下是一个典型脚本结构:
- 定义根路径(如
C:\FTPData),避免硬编码到系统盘默认路径 - 用
for循环逐个创建子目录(如upload、reports、temp) - 对每个新建目录执行
icacls "目录名" /grant "IUSR:(OI)(CI)(RX,W)",赋予IUSR完全控制权 - 可选:添加
echo 正在创建 %dir%... >> setup.log记录操作过程
直接可用的示例脚本
保存为create_ftp_dirs.bat,以管理员身份运行:
@echo off
setlocal enabledelayedexpansion
set ROOT=C:\FTPData
if not exist "%ROOT%" mkdir "%ROOT%"
for %%d in (upload reports temp archives) do (
set DIR="%ROOT%\%%d"
if not exist !DIR! mkdir !DIR!
icacls !DIR! /grant "IUSR:(OI)(CI)(RX,W)" /t /q
echo 已创建并授权: %%d
)
echo 所有FTP匿名目录创建完成。
pause
注意:(OI)表示“对象继承”,(CI)表示“容器继承”,确保新建文件/子目录自动获得相同权限;/t递归应用,/q静默模式。
配套IIS配置要点
目录建好后,还需在IIS管理器中完成两步绑定:
- 右键FTP站点 → “添加FTP虚拟目录”,别名填
upload,物理路径指向C:\FTPData\upload - 该虚拟目录的“FTP身份验证和授权规则”中,勾选“允许匿名用户”,权限选“读取+写入”
无需重启服务,新目录立即生效。若后续需增删目录,只需修改脚本中的for循环列表并重新运行即可。

















