.bat实现通过for和scp拷贝文件夹
时间: 2024-05-05 16:21:42 浏览: 179
copy文件的bat程序
4星 · 用户满意度95%
可以使用以下的 .bat 脚本实现通过 for 和 scp 拷贝文件夹:
```
@echo off
setlocal enabledelayedexpansion
set source_folder=/path/to/source/folder
set dest_folder=/path/to/destination/folder
set remote_user=username
set remote_host=remote.host.com
set remote_port=22
set remote_folder=/remote/path/to/folder
for /d %%f in (%source_folder%\*) do (
set folder_name=%%~nxf
echo Copying folder !folder_name!...
scp -P %remote_port% -r %%f %remote_user%@%remote_host%:%remote_folder%/!folder_name!
)
echo Done.
```
解释一下上面的脚本:
- `set source_folder` 设置源文件夹的路径。
- `set dest_folder` 设置目标文件夹的路径。
- `set remote_user` 设置远程服务器的用户名。
- `set remote_host` 设置远程服务器的主机名或 IP 地址。
- `set remote_port` 设置远程服务器的 SSH 端口号。
- `set remote_folder` 设置远程服务器上目标文件夹的路径。
- `for /d %%f in (%source_folder%\*)` 遍历源文件夹中的所有子文件夹。
- `set folder_name=%%~nxf` 获取当前子文件夹的名称。
- `scp -P %remote_port% -r %%f %remote_user%@%remote_host%:%remote_folder%/!folder_name!` 使用 scp 命令将当前子文件夹拷贝到远程服务器上的目标文件夹中。
注意,上面的脚本中使用了 `enabledelayedexpansion`,这是为了在 `for` 循环中使用 `!` 而不是 `%` 来获取变量的值。如果不使用此选项,就需要将 `!` 替换成 `%`。
阅读全文