我将尝试为一个非it人士朋友自动化一个简单但重复的任务。我是一名电视编辑,但对此有简单的了解,因此我很欣赏您的技能和知识。
在Windows PC上,使用PowerShell,我想要一个脚本(我真的想要一个GUI,但那只是梦想),来:
1. 创建一个新目录在特定的硬编码位置 - 检查是否存在同名目录等。
2. 新目录与所有人共享,具备完全读/写权限。
3. 将新目录映射为持久性驱动器,跳过光学媒体/读卡器驱动器的下一个可用驱动器号。
注:如上所述,在重新启动后,网络共享必须保持持久性。
研究表明对于第1点(但需要更多检查重复项等):
在Windows PC上,使用PowerShell,我想要一个脚本(我真的想要一个GUI,但那只是梦想),来:
1. 创建一个新目录在特定的硬编码位置 - 检查是否存在同名目录等。
2. 新目录与所有人共享,具备完全读/写权限。
3. 将新目录映射为持久性驱动器,跳过光学媒体/读卡器驱动器的下一个可用驱动器号。
注:如上所述,在重新启动后,网络共享必须保持持久性。
研究表明对于第1点(但需要更多检查重复项等):
# PowerShell creates a folder
$Location = "X:\Clients\"
New-Item -Path $Location -Name "My_New_Folder" -ItemType "directory"
#Invoke-Item $Location
研究表明2的解决方案:
不知道从哪里开始
研究表明3的解决方案:
@echo off
setlocal
call :freedrive mydriveletter && goto :cont
echo ERROR: No free drive letter found.
goto :exit
:cont
echo Found drive letter: %mydriveletter%
goto :exit
rem Finds a free drive letter.
rem
rem Parameters:
rem %1 = Output variable name.
rem
rem Example:
rem call :freedrive mydriveletter && goto :cont
rem echo ERROR: No free drive letter found.
rem goto :EOF
rem :cont
rem echo Found drive letter: %mydriveletter%
:freedrive
setlocal EnableDelayedExpansion
set exitcode=0
set "output_var=%~1"
for %%i in (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z) do (
set "drive=%%i:"
rem If 'subst' fails, the drive letter is already in use.
rem This way we can even detect optical drives that have a drive
rem letter but no media in them, a case that goes undetected when
rem using 'if exist'.
subst !drive! %SystemDrive%\ >nul
if !errorlevel! == 0 (
subst !drive! /d >nul
goto :freedrive0
)
)
set exitcode=1
set drive=
:freedrive0
endlocal & set "%output_var%=%drive%" & exit /b %exitcode%
:exit
pause