标题: [文件操作] net use 似乎不支持含有空格的路径,加“”无效,怎么解决 [打印本页]
作者: hentai87 时间: 3 天前 12:08 标题: net use 似乎不支持含有空格的路径,加“”无效,怎么解决
本帖最后由 hentai87 于 2024-11-19 13:49 编辑
- @echo off
- setlocal enabledelayedexpansion
-
- :: 创建或清空日志文件
- set "log_file=%temp%\rename_files_log.txt"
- > "%log_file%" echo 日志文件 - %date% %time%
-
- :: 检查并映射网络驱动器
- :check_drive
- set "drive=Y:"
- echo net use %drive% %~dp0
- net use %drive% %~dp0
- if errorlevel 1 (
- set "drive=X:"
- net use %drive% %~dp0
- if errorlevel 1 (
- echo 无法映射网络驱动器,请手动选择一个未被使用的驱动器字母。 >> "%log_file%"
- pause
- exit /b
- )
- )
-
- echo 成功映射驱动器 %drive% 到 %~dp0 >> "%log_file%"
-
- :: 切换到映射的驱动器
- %drive%
-
- :: 获取当前目录
- set "current_dir=%CD%"
- echo 当前目录: %current_dir% >> "%log_file%"
-
- for %%F in (*) do (
- if "%%F" neq "%~nx0" (
- for /f "tokens=1-3 delims=/ " %%a in ("%%~tF") do (
- set "formatted_date=%%a%%b%%c"
- )
-
- set "file_name=%%F"
- set "prefix=!file_name:~0,8!"
-
- if "!prefix!" == "!formatted_date!" (
- echo 文件 "%%F" 已经包含日期前缀,跳过。 >> "%log_file%"
- ) else (
- set "counter=0"
- :check_conflict
- set "new_name=!formatted_date!"
- if !counter! gtr 0 set "new_name=!formatted_date!-!counter!"
-
- if exist "!new_name!_%%F" (
- set /a counter+=1
- goto check_conflict
- )
-
- ren "%%F" "!new_name! %%F"
- if errorlevel 1 (
- echo 重命名 "%%F" 失败。 >> "%log_file%"
- ) else (
- echo 重命名 "%%F" 为 "!new_name!_%%F" >> "%log_file%"
- )
- )
- )
- )
-
- echo 操作完成。日志文件位于: %log_file%
-
-
- :: 断开映射驱动器
- net use %drive% /delete /yes
- if errorlevel 1 (
- echo 断开驱动器 %drive% 失败。请手动断开。 >> "%log_file%"
- ) else (
- echo 成功断开驱动器 %drive%。 >> "%log_file%"
- )
-
- pause
复制代码
%~dp0这个路径有可能有空格
这个是重命名局域网共享文件的,但是遇到文件夹含有空格就报错,文件名含有!也报错,希望解决这2个报错,并增加支持本地路径
作者: flashercs 时间: 3 天前 20:01
- @echo off
-
- :: 创建或清空日志文件
- set "log_file=%temp%\rename_files_log.txt"
- > "%log_file%" echo 日志文件 - %date% %time%
-
-
- :: 获取当前目录
- set "current_dir=%~dp0"
- echo 当前目录: "%current_dir%" >> "%log_file%"
- (
- for %%F in ("%~dp0*") do (
- if "%%~fF" neq "%~f0" (
- for /f "tokens=1-3 delims=/- " %%a in ("%%~tF") do (
- set "formatted_date=%%a%%b%%c"
- set "fullName=%%~fF"
- set "dp=%%~dpF"
- set "old_name=%%~nxF"
- call :myren
- )
- )
- )
- ) >> "%log_file%"
-
- echo 操作完成。日志文件位于: %log_file%
-
- endlocal
- pause
- exit
- :myren
- if "%old_name:~0,8%"=="%formatted_date%" (
- echo 文件 "%fullName%" 已经包含日期前缀,跳过。
- exit /b
- )
- set "new_name=%formatted_date%_%old_name%"
- set "new_path=%dp%%new_name%"
- set "counter=0"
- :loop1
- if not exist "%new_path%" goto next
- set /a "counter+=1"
- set "new_name=%formatted_date%-%counter%_%old_name%"
- set "new_path=%dp%%new_name%"
- goto loop1
- :next
- ren "%fullName%" "%new_name%"
- if errorlevel 1 (
- echo 重命名 "%fullName%" 失败。
- ) else (
- echo 重命名 "%fullName%" 为 "%new_name%"
- )
- exit /b
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |