Je cherche un équivalent dans windows pour ce script shell:

#!/bin/bash

if [ ! -f  D:/Users/u159615/Desktop/fic ];then
echo 1 > fic
fi
read value < fic

#Rscript myRscript.R $value

value=`expr $value + 1`

echo $value > fic

J'ai essayé ce code:

@ECHO OFF 

IF NOT EXIST D:\Users\u159615\Desktop\fic (echo 1 >= fic)

set /p cpt =< fic

rem Rscript myRscript.R %cpt%

set /a cpt = %cpt%+1
echo %cpt% > fic

Mais j'ai un problème pour le script windows, j'exécute le script trois fois, puis je supprime le fichier fic et je le relance mais la valeur de la variable cpt n'est pas remise à 1. est-ce que quelqu'un a une idée?

Merci d'avance

2
Matthieu Huang 5 avril 2017 à 15:33

2 réponses

Meilleure réponse

Faites attention aux espaces autour de =. Dans le lot, l'espace fera partie du nom de la variable. echo digit>file sera considéré comme la redirection d'un flux donc dans ce cas, vous aurez besoin d'une paire de crochets supplémentaires.

@ECHO OFF 

IF NOT EXIST "D:\Users\u159615\Desktop\fic" ((echo 1)>fic)

set /p cpt=<fic

rem Rscript myRscript.R %cpt%

set /a cpt=%cpt%+1
(echo %cpt%)>fic
1
npocmaka 5 avril 2017 à 14:04

Je suis d'accord avec npocmaka, mais je n'aime pas mélanger les chemins absolus et relatifs.

@ECHO Off
Set fic="%UserProfile%\Desktop\fic"
IF NOT EXIST %fic% (>%fic% echo 1)
set /p "cpt="<%fic%

rem Rscript myRscript.R %cpt%

set /a "cpt+=1"
Echo new cpt=%cpt%
>%fic% echo %cpt%
0
user6811411user6811411 5 avril 2017 à 14:33