.bat实现scp一条条的拷贝文件夹
时间: 2024-04-30 20:19:18 浏览: 192
可以使用以下的 .bat 脚本来实现 scp 一条条地拷贝文件夹:
```
@echo off
set /p source=请输入源文件夹路径(格式:user@hostname:/path/to/folder):
set /p target=请输入目标文件夹路径(格式:user@hostname:/path/to/folder):
for /f "delims=" %%i in ('dir /b /ad "%source%"') do (
echo 正在拷贝文件夹 %%i ...
scp -r "%source%/%%i" "%target%/%%i"
echo 文件夹 %%i 拷贝完成。
)
echo 全部文件夹已拷贝完成。
pause
```
该脚本会提示用户输入源文件夹路径和目标文件夹路径,然后会逐个拷贝源文件夹下的所有子文件夹到目标文件夹中。在拷贝每个文件夹时,会输出提示信息并等待用户确认,以便用户能够了解拷贝进度并及时处理任何出现的错误。
相关问题
.bat实现通过for和scp拷贝文件夹
可以使用以下的 .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` 循环中使用 `!` 而不是 `%` 来获取变量的值。如果不使用此选项,就需要将 `!` 替换成 `%`。
scp 拷贝文件夹命令
SCP 拷贝文件夹命令是:scp -r [源路径] [目标路径],其中,"-r" 表示递归复制。比如,将本地的 "/home/user/source_folder" 文件夹拷贝到远程服务器上的 "/mnt/backup/" 目录下,可以使用命令:scp -r /home/user/source_folder user@remotehost:/mnt/backup/。
阅读全文