pun*_*lly 7 batch-file argument-passing command-line-arguments
我正在编写一个批处理文件,用于自动创建我们销售的产品的典型文件夹结构.我希望能够使用2个可选参数调用我的批处理文件; 供应商的名称和一次创建大量文件夹的文件.如果没有提供供应商,则脚本通过标准输入询问供应商.如果未提供文件,则脚本会询问您要创建的文件夹的名称.如果一个文件被作为参数传递,我想脚本逐行读取文件中的行,并为每行一个文件夹,该行的内容而得名.这是:readFile功能:
:readFile
echo "Reading from file: %theFile%"
FOR /F "delims=," %%a IN (%theFile%) do (
call:makeFolder %%a
)
goto:EOF
Run Code Online (Sandbox Code Playgroud)
这是一个:makeFolder函数,它可以选择接受要创建的文件夹名称的参数.如果没有提供参数,它会通过标准输入询问名称.
:makeFolder
if [%1]==[] (
set /p product="Enter product name: "
) else (
set product=%1
)
if exist "P:\%supplier%\Products\%product%" (
echo.
echo The folder '%product%' already exists.
echo.
goto:EOF
)
mkdir "P:\%supplier%\Products\%product%\Images\Web Ready"
mkdir "P:\%supplier%\Products\%product%\Images\Supplied"
mkdir "P:\%supplier%\Products\%product%\Images\Edited"
goto:EOF
Run Code Online (Sandbox Code Playgroud)
我的问题是在:makeFolder函数%1中指的是命令行中给出的第一个参数,而不是:readFile函数中提供的参数.我怎样才能做到这一点?警告:我是很新的批量脚本,所以你可以有一个像我有点笨跟我说话.
jeb*_*jeb 11
我重建文件,它工作
@echo off
set "supplier=C:\temp\supp\"
set "product=Car"
echo test1,myComment,myValue > myFile.txt
call :readFile "myFile.txt"
EXIT /B
:readFile
echo "Reading from file: %~1"
FOR /F "usebackq delims=," %%a IN ("%~1") do (
call :makeFolder %%a
)
goto:EOF
:makeFolder
if "%1"=="" (
set /p product="Enter product name: "
) else (
set "product=%1"
)
if exist "%supplier%\Products\%product%" (
echo(
echo The folder '%product%' already exists.
echo(
goto:EOF
)
echo "%1"
echo mkdir "%supplier%\Products\%product%\Images\Web Ready"
echo mkdir "%supplier%\Products\%product%\Images\Supplied"
echo mkdir "%supplier%\Products\%product%\Images\Edited"
goto:EOF
Run Code Online (Sandbox Code Playgroud)
但我建议使用延迟扩展,因为你可能会遇到特殊字符扩展百分比的问题(在这种情况下不是很相关,因为特殊字符是文件/目录名称的错误选择).
| 归档时间: |
|
| 查看次数: |
37394 次 |
| 最近记录: |